home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #14 / Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO / prog_gen / inter49c.zip / OPCODES.LST < prev    next >
File List  |  1996-02-11  |  154KB  |  6,879 lines

  1. OPCODES LIST            Release 49        Last Change: 2/11/96
  2.  
  3. ------------------------------------------------------------
  4. This is DOC 'bout undocumented command and document command
  5. of any last processors. And 'bout some registers and
  6. Chip specified stuffs.
  7. ------------------------------------------------------------
  8.  (C) (P) Potemkin's Hackers Group 1994,1995
  9. ------------------------------------------------------------
  10. Revision 1.44             17 December 1995
  11. ------------------------------------------------------------
  12. All Your messages send to ->
  13. E-mail: avp@iron.misa.ac.ru
  14. AirMail:
  15.     111538 RUSSIA,    Moscow
  16.     P.O.        box 430
  17.     Potemkin's Hackers Group (PHG)
  18. -------------------------------------------------------------
  19.  
  20.  
  21. ---------------------------------------------------
  22. AAA   -     ASCII adjust AX after addition
  23.  
  24.  
  25. CPU:  8086+
  26. Type of Instruction: User
  27.  
  28. Instruction:  AAA   ; (no operands)
  29.  
  30. Description:
  31.     IF ((( AL and 0FH ) > 9 ) or (AF==1)
  32.     THEN {
  33.         IF CPU<286 THEN {  AL <- AL+6 }
  34.                ELSE {  AX <- AX+6 }
  35.         AH <- AH+1
  36.         CF <- 1
  37.         AF <- 1
  38.     } ELSE {
  39.         CF <- 0
  40.         AF <- 0
  41.     }
  42.     AL <- AL and 0Fh
  43.  
  44.  
  45. Note: This istruction incorrectly documented in Intel's materials.
  46.       See description field.
  47.  
  48. Flags Affected:    AF,CF        (modified)
  49.         OF,SF,ZF,PF (undefined)
  50.  
  51. Faults:
  52.     RM    PM    V86    VME
  53.     None
  54.  
  55.  
  56. CPU mode: RM,PM,VM,SMM
  57.  
  58. +++++++++++++++++++++++
  59. Physical Form:
  60. COP (Code of Operation)     : 37H
  61.  
  62. Clocks:
  63.         AAA
  64. 8086:        4
  65. 8088:        4
  66. 80186:        8
  67. 80286:        3
  68. 80386:        4
  69. i486:        3
  70. Pentium:    3
  71.  
  72. Cx486SLC:    4
  73. Cx486DX:    4
  74. IBM 486BL3X:    4
  75. UMC U5S:    1
  76.  
  77.  
  78. ---------------------------------------------------
  79. AAD    - ASCII adjust AX before Division
  80.  
  81. CPU:  8086+
  82. Type of Instruction: User
  83.  
  84. Instruction:  AAD basen
  85.  
  86. Description:
  87.         AL <- (AH*basen) + AL
  88.         AH <- 0
  89.  
  90.  
  91. Flags Affected: SF,ZF,PF    (modified)
  92.         OF,AF,CF    (undefined)
  93.  
  94. Faults:
  95.     RM    PM    V86    VME    SMM
  96.     None
  97.  
  98.  
  99. CPU mode: RM,PM,VM,SMM
  100.  
  101. Note:    AAD    without operands means AAD with operand 0AH.
  102.  
  103. Note: NECs understand only AAD 0AH form.
  104.  
  105. +++++++++++++++++++++++
  106.  
  107. Physical Form: AAD imm8
  108.  
  109. COP (Code of Operation)     : D5H    imm8
  110.  
  111. Clocks:        AAD 0AH
  112. 8086:        60
  113. 80186:        15
  114. 80286:        14
  115. 80386:        19
  116. i486:        14
  117. Pentium:    10
  118.  
  119. Cx486SLC:    4
  120. Cx486DX:    4
  121.  
  122. IBM 486BL3X:    15
  123. UMC    U5S:    11
  124.  
  125. ---------------------------------------------------
  126. AAM    - ASCII adjust AX after Multiply
  127.  
  128. CPU:  8086+
  129. Type of Instruction: User
  130.  
  131. Instruction:  AAM basen
  132.  
  133. Description:
  134.         AH <- AL  / basen
  135.         AL <- AL MOD basen
  136.  
  137.  
  138. Flags Affected: SF,ZF,PF    (modified)
  139.         OF,AF,CF    (undefined)
  140.  
  141. Faults:
  142.     RM    PM    V86    VME    SMM
  143.     None
  144.  
  145. CPU mode: RM,PM,VM,SMM
  146.  
  147. Note:    AAM    without operands means AAM with operand 0AH.
  148.  
  149. WARNING: NECs understand only AAM 0Ah form.
  150.  
  151. +++++++++++++++++++++++
  152.  
  153. Physical Form: AAM imm8
  154.  
  155. COP (Code of Operation)     : D4H    imm8
  156.  
  157. Clocks:        AAM 0AH
  158. 8086:        83
  159. 80186:        19
  160. 80286:        16
  161. 80386:        17
  162. i486:        15
  163. Pentium:    18
  164.  
  165. Cx486SLC:    16
  166. Cx486DX:    16
  167.  
  168. IBM 486BL3X:    17
  169. UMC    U5S:    12
  170.  
  171. ---------------------------------------------------
  172. ADD4S  -  Addition for packed BCD strings
  173.  
  174.  
  175. CPU: all NECs  V-series
  176. Type of Instruction: User
  177.  
  178. Instruction:  ADD4S
  179.  
  180. Description:
  181.     BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  182.       BCD STRING (ADDRESS=DS:SI,LENGTH=CL) +
  183.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  184.  
  185. Note:    si,di, other registers not changed
  186.  
  187. Flags Affected: OF,CF,ZF
  188.     ;;  ZF set if both strings are zeros.
  189.     ;;  CF,OF set as result of operation with most
  190.     ;;  signification BCDs.
  191.  
  192. CPU mode: RM
  193.  
  194. +++++++++++++++++++++++
  195. Physical Form: ADD4S
  196. COP (Code of Operation)     : 0FH 20H
  197.  
  198. Clocks:        ADD4S
  199. NEC V20:    ~19*(CL/2)+7
  200.  
  201. ---------------------------------------------------
  202. BOUND    -  Chack Array Index Against Bounds
  203.  
  204. CPU:  80186+,NECs
  205. Type of Instruction: User - HLL support
  206.  
  207. Instruction:  BOUND index,bound_array
  208.  
  209. Description:
  210.         IF (index < (opsize ptr [bound_array]))
  211.            OR
  212.            (index > (opsize ptr [bound_array+opsize]))
  213.         THEN  INT 5;
  214.  
  215.  
  216. Flags Affected: No Flags Affected
  217.  
  218. CPU mode: RM,PM,VM,SMM
  219.  
  220. Faults:
  221.     RM    PM    V86    VME    SMM
  222.         #GP(0)                if result is nonwritable seg.
  223.         #GP(0)                illegal memory operand
  224.                         in CS..GS (exc. SS)
  225.         #SS(0)                illegal memory operand in SS
  226.         #PF    #PF
  227.     #UD    #UD    #UD            if 2nd operand is register
  228.     #13                    if any part of operand lie
  229.                         outside of 0..FFFFh
  230.         #AC    #AC            if CPL=3 and enable AC.
  231.  
  232.  
  233. Note:     (186s&NECs) saved CS:IP BOUND interrupt as pointer to following
  234.       instruction that self.
  235.      (286+) saved as pointer to BOUND instruction.
  236.  
  237.  
  238. +++++++++++++++++++++++
  239.  
  240. Physical Form: BOUND reg16,mem32
  241.            BOUND reg32,mem64
  242.  
  243. COP (Code of Operation)     : 62H    Postbyte
  244. Note: for 32bit op. add Pfix 66h if in 16bit mode
  245.  
  246. Clocks:        BOUND reg16,mem16
  247.         In Range    Out Range
  248. 80186:                33-35
  249. 80286:        13        int+13
  250. 80386:        10
  251. i486:        7
  252. Pentium:    8        int+32
  253.  
  254. Cx486SLC:    11        int+11
  255. Cx486DX:    11        int+11
  256.  
  257.  
  258. ---------------------------------------------------
  259. BRKCS  -  Break with Contex Switch
  260.  
  261. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  262. Type of Instruction: System
  263.  
  264. Instruction:  BRKCS  bank
  265.  
  266. Description:
  267.     Perform a High-Speed Software Interrupt with contex-switch to
  268.     register bank indicated by the lower 3-bits of 'bank'.
  269.  
  270.  
  271. Info:    NEC V25/V35/V25 Plus/V35 Plus Bank System
  272.  
  273.     This Chips have     8 32bytes register banks, which placed in
  274.     Internal chip RAM by addresses:
  275.     xxE00h..xxE1Fh Bank 0
  276.     xxE20h..xxE3Fh Bank 1
  277.        .........
  278.     xxEC0h..xxEDFh Bank 6
  279.     xxEE0h..xxEFFh Bank 7
  280.     xxF00h..xxFFFh Special Functions Register
  281.     Where xx is Value of IDB register.
  282.     IBD is Byte Register contained Internal data area base
  283.     IBD addresses is FFFFFh and xxFFFh where xx is data in IBD.
  284.  
  285.  
  286.     Format of Bank:
  287.     +0    Reserved
  288.     +2    Vector PC
  289.     +4    Save   PSW
  290.     +6    Save   PC
  291.     +8    DS0        ;DS
  292.     +A    SS        ;SS
  293.     +C    PS        ;CS
  294.     +E    DS1        ;ES
  295.     +10    IY        ;DI
  296.     +11    IX        ;SI
  297.     +14    BP        ;BP
  298.     +16    SP        ;SP
  299.     +18    BW        ;BX
  300.     +1A    DW        ;DX
  301.     +1C    CW        ;CX
  302.     +1E    AW        ;AX
  303.  
  304.     Format of V25 etc. PSW (FLAGS):
  305.     Bit    Description
  306.     15    1
  307.     14    RB2 \
  308.     13    RB1  >    Current Bank Number
  309.     12    RB0 /
  310.     11    V    ;OF
  311.     10    DIR    ;DF
  312.     9    IE    ;IF
  313.     8    BRK    ;TF
  314.     7    S    ;SF
  315.     6    Z    ;ZF
  316.     5    F1    General Purpose user flag #1
  317.             (accessed by Flag Special Function Register)
  318.     4    AC    ;AF
  319.     3    F0    General purpose user flag #0
  320.             (accessed by Flag Special Function Register)
  321.     2    P    ;PF
  322.     1    BRKI    I/O Trap Enable Flag
  323.     0    CY    ;CF
  324.  
  325.  
  326. Flags Affected:     None
  327.  
  328. CPU mode: RM
  329.  
  330. +++++++++++++++++++++++
  331. Physical Form:    BRKCS reg16
  332. COP (Code of Operation)     : 0Fh 2Dh <1111 1RRR>
  333.  
  334. Clocks:     15
  335.  
  336.  
  337. ---------------------------------------------------
  338. BRKEM  -  Break for Emulation
  339.  
  340.  
  341. CPU: NEC/Sony V20/V30/V40/V50
  342. Type of Instruction: System
  343.  
  344. Instruction:  BRKEM  intnum
  345.  
  346. Description:
  347.         PUSH    FLAGS
  348.         PUSH    CS
  349.         PUSH    IP
  350.         MOV    CS,0:[intnum*4+2]
  351.         MOV    IP,0:[intnum*4]
  352.         MD <- 0;    // Enable 8080 emulation
  353.  
  354.  
  355. Note:    BRKEM instruction do software interrupt and then New CS,IP loaded
  356.     it switch to 8080 mode i.e. CPU will execute 8080 code.
  357.     Mapping Table of Registers in 8080 Mode
  358.     8080 Md.   A  B     C  D  E  H  L    SP PC  F
  359.     native.       AL CH CL DH DL BH BL BP IP  FLAGS(low)
  360.     For Return of 8080 mode use CALLN instruction.
  361. Note:    I.e. 8080 addressing only 64KB then "Real Address" is CS*16+PC
  362.  
  363. Flags Affected: MD
  364.  
  365. CPU mode: RM
  366.  
  367. +++++++++++++++++++++++
  368. Physical Form:           BRKEM imm8
  369. COP (Code of Operation)     : 0FH FFH imm8
  370.  
  371. Clocks:        BRKEM  imm8
  372. NEC V20:    38
  373.  
  374.  
  375. ---------------------------------------------------
  376. BRKN    -  Break to Native Mode
  377.  
  378. CPU:  NEC (V25/V35) Software Guard only
  379. Type of Instruction: System
  380.  
  381. Instruction:  BRKN int_vector
  382.  
  383. Description:
  384.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  385.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  386.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  387.          SP     <-  SP -6
  388.          IE     <-  0
  389.          BRK <-  0
  390.          MD     <-  1
  391.          PC     <- [int_vector*4 +0,+1]
  392.          PS     <- [int_vector*4 +2,+3]
  393.  
  394. Note:    The BRKN instruction switches operations in Native Mode
  395.     from Security Mode via Interrupt call. In Normal Mode
  396.     Instruction executed as     mPD70320/70322 (V25) operation mode.
  397.  
  398. Flags Affected:     None
  399.  
  400. CPU mode: RM
  401.  
  402. +++++++++++++++++++++++
  403. Physical Form:    BRKN  imm8
  404. COP (Code of Operation)     : 63h imm8
  405.  
  406. Clocks:     56+10T [44+10T]
  407. ---------------------------------------------------
  408. BRKS    -  Break to Security Mode
  409.  
  410. CPU:  NEC (V25/V35) Software Guard  only
  411. Type of Instruction: System
  412.  
  413. Instruction:  BRKS int_vector
  414.  
  415. Description:
  416.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  417.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  418.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  419.          SP     <-  SP -6
  420.          IE     <-  0
  421.          BRK <-  0
  422.          MD     <-  0
  423.          PC     <- [int_vector*4 +0,+1]
  424.          PS     <- [int_vector*4 +2,+3]
  425.  
  426. Note:    The BRKS instruction switches operations in Security Mode
  427.     via Interrupt call. In Security Mode the fetched operation
  428.     code is executed after conversion in accordance with build-in
  429.     translation table
  430.  
  431. Flags Affected:     None
  432.  
  433. CPU mode: RM
  434.  
  435. +++++++++++++++++++++++
  436. Physical Form:    BRKS  imm8
  437. COP (Code of Operation)     : F1h imm8
  438.  
  439. Clocks:     56+10T [44+10T]
  440. ---------------------------------------------------
  441. BRKXA    -  Break to Expansion Address
  442.  
  443. CPU:  NEC V33/V53  only
  444. Type of Instruction: System
  445.  
  446. Instruction:  BRKXA int_vector
  447.  
  448. Description:
  449.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  450.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  451.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  452.          SP     <-  SP -6
  453.          IE     <-  0
  454.          BRK <-  0
  455.          MD     <-  0
  456.          PC     <- [int_vector*4 +0,+1]
  457.          PS     <- [int_vector*4 +2,+3]
  458.          Enter Expansion Address Mode.
  459.  
  460. Note:    In NEC V53 Memory Space dividing into 1024 16K pages.
  461.     The programming model is Same as in Normal mode.
  462.  
  463.     Mechanism is:
  464.     20 bit Logical Address:     19..14 Page Num  13..0 Offset
  465.  
  466.     page Num convertin by internal table to 23..14 Page Base
  467.     tHE pHYSICAL ADDRESS is both Base and Offset.
  468.  
  469.     Address Expansion Registers:
  470.     logical Address A19..A14    I/O Address
  471.     0                FF00h
  472.     1                FF02h
  473.     ...                ...
  474.     63                FF7Eh
  475.  
  476.     Register XAM aliased with port # FF80h indicated current mode
  477.     of operation.
  478.     Format of XAM register (READ ONLY):
  479.     15..1    reserved
  480.     0    XA Flag, if=1 then in XA mode.
  481.  
  482.  
  483. Format    of  V53 PSW:
  484.     15..12    1
  485.     11    V
  486.     10    DIR
  487.     9    IE
  488.     8    BRK
  489.     7    S
  490.     6    Z
  491.     5    0
  492.     4    AC
  493.     3    0
  494.     2    P
  495.     1    1
  496.     0    CY
  497.  
  498. Flags Affected:     None
  499.  
  500. CPU mode: RM
  501.  
  502. +++++++++++++++++++++++
  503. Physical Form:    BRKXA  imm8
  504. COP (Code of Operation)     : 0Fh E0h imm8
  505.  
  506. Clocks:     12
  507. ---------------------------------------------------
  508. BTCLR    -  Bit Test, If it True Clear and Branch
  509.  
  510. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  511. Type of Instruction: User
  512.  
  513. Instruction:  BTCLR var,bitnumber,Short_Label
  514.  
  515. Description:
  516.           IF  BIT(bitnumber OF var) =1 THEN
  517.             {
  518.             PC <- PC + ext - disp8;
  519.             BIT(bitnumber OF var) <-0
  520.             }
  521.  
  522.  
  523. Flags Affected:     None
  524.  
  525. CPU mode: RM
  526.  
  527. +++++++++++++++++++++++
  528. Physical Form:    BTCLR reg/mem8,imm3, short_label
  529. COP (Code of Operation)     : 0Fh 9Ch PostByte imm3  Short_Label (Total=5 bytes)
  530.  
  531. Clocks:     29
  532.  
  533.  
  534. ---------------------------------------------------
  535. BSWAP  - Bytes Swap
  536.  
  537.  
  538. CPU:  I486 +
  539. Type of Instruction: User
  540.  
  541. Instruction: BSWAP dwordr
  542. Description:
  543.          XCHG  BYTE dwordr[31:24],dwordr[7:0]
  544.          XCHG  BYTE dwordr[23:16],dwordr[15:8]
  545.  
  546.          ; Need Good Picture to Show It
  547.  
  548. Notes: This instruction used for converting big-endian
  549. (Intel) format to little-endian (Motorolla etc.) format.
  550.  
  551.  
  552. Flags Affected: None
  553. CPU mode: RM,PM,VM,SMM
  554.  
  555. Physical Form:         BSWAP r32
  556. COP (Code of Operation): 0FH 11001rrr  (For 32bit segment)
  557. Clocks: Cyrix Cx486SLC : 4
  558.           i486     : 1
  559.           Pentium  : 1
  560.     Cyrix Cx486DX  : 4
  561.     UMC   U5S      : 2
  562.     IBM 486BL3X    : 9
  563.  
  564.  
  565.  
  566. ---------------------------------------------------
  567. CALLN      - Call Native Mode Routine
  568.  
  569.  
  570. CPU: NEC/Sony V20/V30 etc
  571. Type of Instruction: System
  572.  
  573. Instruction:  CALLN intnum
  574.  
  575. Description:
  576.     CALLN instruction call (interrupt service in Native Mode)
  577.     from 8080 emulation mode:
  578.         PUSH    FLAGS
  579.         PUSH    CS
  580.         PUSH    IP
  581.         IF <- 0
  582.         TF <- 0
  583.         MD <- 1
  584.         MOV    CS,0:[intnum*4+2]
  585.         MOV    IP,0:[intnum*4]
  586.  
  587.  
  588. Flags Affected: IF,TF,MD
  589.  
  590. CPU mode: 8080 Emulation
  591.  
  592. +++++++++++++++++++++++
  593. Physical Form: CALLN imm8
  594. COP (Code of Operation)     : EDH EDH imm8
  595.  
  596. Clocks:
  597. NEC V20/V30:    38-58
  598.  
  599.  
  600. ---------------------------------------------------
  601. CLEAR1    -  Clear one bit
  602.  
  603.  
  604. CPU: NEC/Sony all V-series.
  605. Type of Instruction: User
  606.  
  607. Instruction:  CLEAR1 dest,bitnumb
  608.  
  609. Description:
  610.         BIT  bitnumb OF dest <- 0;
  611.  
  612.  
  613. Flags Affected: None
  614.  
  615.  
  616. CPU mode: RM
  617.  
  618. +++++++++++++++++++++++
  619. Physical Form:           CLEAR1 reg/mem8,CL
  620. COP (Code of Operation)     : 0FH 12H  Postbyte
  621.  
  622. Physical Form:           CLEAR1 reg/mem8,imm8
  623. COP (Code of Operation)     : 0FH 1AH  Postbyte imm8
  624.  
  625. Physical Form:           CLEAR1 reg/mem16,CL
  626. COP (Code of Operation)     : 0FH 13H  Postbyte
  627.  
  628. Physical Form:           CLEAR1 reg/mem16,imm8
  629. COP (Code of Operation)     : 0FH 1BH  Postbyte  imm8
  630.  
  631.  
  632. Clocks:                 CLEAR1
  633.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  634. NEC V20:      5/14     6/15          5/14         6/15
  635.  
  636.  
  637. ---------------------------------------------------
  638. CMOVcc     -    Conditional Move
  639.  
  640. CPU:  P6
  641. Type of Instruction:  User
  642.  
  643. Instruction:  CMOVcc  dest,sorc
  644.  
  645. Description:
  646.           IF condition(cc) is true THEN dest <- sorc;
  647.  
  648.  
  649. Flags Affected:    None
  650.  
  651.  
  652. CPU mode: RM,PM,VM,SMM
  653.  
  654.  
  655. +++++++++++++++++++++++
  656. Physical Form & COPs:
  657.  
  658. CMOVO    reg,reg/mem    0FH 40H Postbyte
  659. CMOVNO    reg,reg/mem    0FH 41H Postbyte
  660. CMOVC    reg,reg/mem    0FH 42H Postbyte
  661. CMOVNC    reg,reg/mem    0FH 43H Postbyte
  662. CMOVZ    reg,reg/mem    0FH 44H Postbyte
  663. CMOVNZ    reg,reg/mem    0FH 45H Postbyte
  664. CMOVNA    reg,reg/mem    0FH 46H Postbyte
  665. CMOVA    reg,reg/mem    0FH 47H Postbyte
  666. CMOVS    reg,reg/mem    0FH 48H Postbyte
  667. CMOVNS    reg,reg/mem    0FH 49H Postbyte
  668. CMOVP    reg,reg/mem    0FH 4AH Postbyte
  669. CMOVNP    reg,reg/mem    0FH 4BH Postbyte
  670. CMOVL    reg,reg/mem    0FH 4CH Postbyte
  671. CMOVNL    reg,reg/mem    0FH 4DH Postbyte
  672. CMOVNG    reg,reg/mem    0FH 4EH Postbyte
  673. CMOVG    reg,reg/mem    0FH 4FH Postbyte
  674.  
  675. Clocks:     ~1  (~pairing with other instructions)
  676. ---------------------------------------------------
  677. CMP4S  -  Compare for packed BCD strings
  678.  
  679.  
  680. CPU: NEC/Sony all  V-series
  681. Type of Instruction: User
  682.  
  683. Instruction:  CMP4S
  684.  
  685. Description:
  686.       SetFlaGS( BCD STRING (ADDRESS=ES:DI,LENGTH=CL) -
  687.             BCD STRING (ADDRESS=DS:SI,LENGTH=CL) );
  688.  
  689.  
  690. Note:    si,di, other registers not changed
  691.  
  692. Flags Affected: OF,CF,ZF
  693.     ;;  ZF set if RESULT of subtraction is zero.
  694.     ;;  CF,OF set as result of operation with most
  695.     ;;  signification BCDs.
  696.  
  697. CPU mode: RM
  698.  
  699. +++++++++++++++++++++++
  700. Physical Form: CMP4S
  701. COP (Code of Operation)     : 0FH 26H
  702.  
  703. Clocks:        CMP4S
  704. NEC V20:    ~7+19*CL
  705.  
  706.  
  707.  
  708.  
  709. ---------------------------------------------------
  710. CMPXCHG8B  - Compare and exchange 8 bytes
  711.  
  712.  
  713. CPU:  Pentium (tm)
  714. Type of Instruction: Operation
  715.  
  716. Instruction: CMPXCHG8B dest
  717.  
  718. Note: dest is memory operand: QWORD PTR [memory]
  719. Description:
  720.     IF ( QWORD(EDX:EAX) = dest) THEN
  721.              {
  722.              ZF <- 1;
  723.              dest <- QWORD(ECX:EBX);
  724.              }
  725.            ELSE
  726.              {
  727.              ZF <- 0;
  728.              EDX:EAX <- dest
  729.              }
  730.       END
  731.  
  732. Flags Affected:     ZF
  733.  
  734. CPU mode: RM,PM,VM,SMM
  735.  
  736. Physical Form:           CMPXCHG8B mem64
  737. COP (Code of Operation)     : 0FH C7H Postbyte
  738. Clocks:          Pentium     : 10
  739.  
  740. Note: Postbyte MMRRRMMM:  MM<>11 if (==) then INT 6
  741.  
  742. ---------------------------------------------------
  743. CMPXCHG     - Compare and exchange
  744.  
  745.  
  746. CPU:  i486+
  747. Type of Instruction: User
  748.  
  749. Instruction: CMPXCHG dest,sorc
  750.  
  751. Description:
  752.     Acc = if OperationSize(8)  -> AL
  753.          OperationSize(16) -> AX
  754.          OperationSize(32) -> EAX
  755.  
  756.     IF ( Acc = dest) THEN
  757.              {
  758.              ZF <- 1;
  759.              dest <- sorc;
  760.              }
  761.            ELSE
  762.              {
  763.              ZF <- 0;
  764.              Acc <- dest;
  765.              }
  766.       END
  767.  
  768. Note: This instruction used to support semaphores
  769.  
  770.  
  771. Flags Affected:     ZF ( see description)
  772.          OF,SF,AF,PF,CF ( like CMP instruction ) ( see description)
  773.  
  774. CPU mode: RM,PM,VM,SMM
  775.  
  776. +++++++++++++++++++++++
  777. Physical Form:           CMPXCHG  r/m8,r8
  778. COP (Code of Operation)     : 0FH A6H Postbyte    ; i486 (A-B0 step)
  779.              : 0FH B0H Postbyte    ; i486 (B1+ step clones
  780.                            ;      and upgrades)
  781.  
  782. Clocks:
  783.        Intel i486     :  6/7     if compare OK
  784.              :  6/10 if compare FAIL
  785.      Cyrix Cx486SLC     :  5/7
  786.      Pentium (tm)     :  6
  787.  
  788. Penalty if cache miss     :
  789.       Intel i486     : 2
  790.      Cyrix Cx486SLC     : 1
  791. +++++++++++++++++++++
  792. Physical Form:           CMPXCHG  r/m16,r16
  793.                CMPXCHG  r/m32,r32
  794. COP (Code of Operation)     : 0FH A7H Postbyte    ; i486 (A-B0 step)
  795.              : 0FH B1H Postbyte    ; i486 (B1+ step clones
  796.                            ;      and upgrades)
  797.  
  798. Clocks:
  799.        Intel i486     :  6/7     if compare OK
  800.              :  6/10 if compare FAIL
  801.      Cyrix Cx486SLC     :  5/7
  802.      Pentium (tm)     :  6
  803.  
  804. Penalty if cache miss     :
  805.       Intel i486     : 2
  806.      Cyrix Cx486SLC     : 1
  807.  
  808.  
  809. ---------------------------------------------------
  810. CPUID - CPU Identification
  811.  
  812.  
  813. CPU:  Intel 486DX/SX/DX2 SL Enhanced and all later
  814. Intel processors include ( IntelDX4, IntelSX2,
  815. Pentium etc.), UMC microprocessors: U5S,U5SD,U5S-VL.
  816. Cyrix M1, AMD K5, Intel P6, and AMD Ehnanced Am486 CPU,
  817. such as A80486DX4-100SV8B.
  818.  
  819. Note: i.e.  1993+ years processors produced by Intel
  820. Note: To know if your CPU support CPUID instruction
  821. try to set ID flag ( bit 21 of EFLAGS ) to 1, and
  822. if it sets this mean that CPUID support.(Soft).
  823. Or If Your CPU is Intel Look for '&E' signature on
  824. Top side of Chip.(Hard)
  825. Type of Instruction: Operation
  826.  
  827. Instruction: CPUID
  828. Description:
  829.     IF (EAX=0) THEN
  830.           {
  831.           EAX <- Maximum value of EAX to CALL CPUID instruction
  832.             1 for all processors (date 1 September 1994)
  833.             may be >1 in future microprocessors
  834.  
  835.           ;; EBX,EDX and ECX contain a OEM name string
  836.           ;; for Intel this string is 'GenuineIntel'
  837.  
  838.            EBX <- 756E6547H i.e. 'Genu'
  839.            EDX <- 49656E69H i.e. 'ineI'
  840.            ECX <- 6C65746EH i.e. 'ntel'
  841.  
  842.           ;; for UMC   this string is 'UMC UMC UMC '
  843.  
  844.            EBX <- 32434D55H i.e. 'UMC '
  845.            EDX <- 32434D55H i.e. 'UMC '
  846.            ECX <- 32434D55H i.e. 'UMC '
  847.  
  848.           ;; for Cyrix this string is 'CyrixInstead'  (M1)
  849.           ;; for AMD   this string is 'AuthenticAMD'  (K5,486 Enhanced CPUs)
  850.  
  851.           }
  852.     ELSEIF (EAX=1) THEN
  853.           {
  854.           EAX[3:0]    <- Stepping ID
  855.           EAX[7:4]    <- Model
  856.           EAX[11:8] <- Family
  857.              ;    3 - 386 family
  858.              ;    4 - i486 family
  859.              ;    5 - Pentium family
  860.              ;    6 - P6 family
  861.           EAX[15:12] <- Reserved
  862.              ;    0 - Original OEM processor
  863.              ;    1 - OverDrive
  864.              ;    2 - Dual Processor
  865.              Note: Pentium P54C have pin CPUTYPE which
  866.                define is this CPU First or Second e.t.c
  867.                in System.
  868.                So, if this chip set in "First" socket it
  869.                    return for example  0425h, but THIS chip
  870.                    return 2425h if we insert it in "Second"
  871.                    socket.
  872.         Note: Refer to Appendix B for more information.
  873.  
  874.  
  875.           EAX[31:16] <- Reserved and set to 0s now
  876.  
  877.           EDX <- Compability flags
  878.           ;; below all info if bit flag =1
  879.          EDX[0] <- FPU on Chip
  880.          EDX[1] <- Virtual Mode Extention present
  881.          EDX[2] <- CPU support I/O Breakpoints
  882.          EDX[3] <- CPU support    4MB size pages
  883.          EDX[4] <- TSC present (See RDTSC command)
  884.          EDX[5] <- CPU have Pentium Compatible MSR
  885.                (Model Specified Registers.
  886.          EDX[6] <- Reserved (=0 now)
  887.          EDX[7] <- Machine Check exception
  888.          EDX[8] <- CMPXCHG8B instruction
  889.          EDX[9] <- APIC on Chip
  890.          EDX[10]<- used by P6
  891.          EDX[11]<- used by P6
  892.          EDX[31:10] <- Reserved and set to 0s now
  893.           }
  894.     ELSEIF ( EAX > 1 ) THEN
  895.           {
  896.           EAX,EBX,ECX,EDX <- Undefined
  897.           }
  898.     END.
  899.  
  900.  
  901. Global Note:
  902.        This file contain open i.e nonconfiderential information about
  903.        CPUID information.
  904.        If you want MORE try to contact Intel, may be (but I'm sure that not)
  905.          Intelers give you "Yellow Pages" (i.e Supplement to Pentium(tm)
  906.          Processor User's Manual) to read inside office.
  907.  
  908. Refer to:  Appendix B for more informations about CPU codes.
  909.  
  910. Here is 3 examples of Information we can may get from CPUID instruction:
  911.  
  912. 1) UMC U5S
  913.    Note: All UMC Chips: U5S,U5SD, 3V chips never have FPU on-chip,
  914.      and never support VME
  915.  
  916.  
  917. CPUID return CPUID information
  918. Maximum Available of CPUID info entrys:1
  919. Vendor string is : "UMC UMC UMC "
  920.  
  921. Model Info :
  922. Stepping ID is : 3
  923. Model           : 2
  924. Family           : 4
  925. M field           : 0
  926. Compability Flags:
  927. FPU on Chip               :-
  928. Virtual Mode Extensions present       :-
  929. CPU support I/O breakpoints       :-
  930. CPU support 4MB pages           :-
  931. Time Stamp Counter Presents       :-
  932. CPU have Pentium compatible MSRs   :-
  933. Machine Check Exception Presents   :-
  934. CMPXCHG8B instruction support       :-
  935. APIC on Chip               :-
  936.  
  937.  
  938. 2) Intel 486
  939.    Note: All SL Enhanced 486:  { i486SX,i486DX,i486DX2 marked '&E' on chip
  940.    surface }, IntelSX2,IntelDX4 support VME !!!!
  941.    But: Sxs never have FPU on chip.
  942.  
  943. CPUID return CPUID information
  944. Maximum Available of CPUID info entrys:1
  945. Vendor string is : "GenuineIntel"
  946.  
  947. Model Info :
  948. Stepping ID is : 0
  949. Model           : 8
  950. Family           : 4
  951. M field           : 0
  952. Compability Flags:
  953. FPU on Chip               :+
  954. Virtual Mode Extensions present       :+
  955. CPU support I/O breakpoints       :-
  956. CPU support 4MB pages           :-
  957. Time Stamp Counter Presents       :-
  958. CPU have Pentium compatible MSRs   :-
  959. Machine Check Exception Presents   :-
  960. CMPXCHG8B instruction support       :-
  961. APIC on Chip               :-
  962.  
  963.  
  964. 3) Pentium
  965.    Note: P54C may say that build-in APIC not present if it
  966.    not supported by external hardware !!!!! (This data from
  967.    P54C in single processor configuration)
  968.  
  969. CPUID return CPUID information
  970. Maximum Available of CPUID info entrys:1
  971. Vendor string is : "GenuineIntel"
  972.  
  973. Model Info :
  974. Stepping ID is : 1
  975. Model           : 2
  976. Family           : 5
  977. M field           : 0
  978. Compability Flags:
  979. FPU on Chip               :+
  980. Virtual Mode Extensions present       :+
  981. CPU support I/O breakpoints       :+
  982. CPU support 4MB pages           :+
  983. Time Stamp Counter Presents       :+
  984. CPU have Pentium compatible MSRs   :+
  985. Machine Check Exception Presents   :+
  986. CMPXCHG8B instruction support       :+
  987. APIC on Chip               :-
  988.  
  989.  
  990. 4) Pentium OverDrive
  991.    Note: P24T never have Machine Check Exception
  992.  
  993. CPUID return CPUID information
  994. Maximum Available of CPUID info entrys:1
  995. Vendor string is : "GenuineIntel"
  996.  
  997. Model Info :
  998. Stepping ID is : 1
  999. Model           : 3
  1000. Family           : 5
  1001. M field           : 1
  1002. Compability Flags:
  1003. FPU on Chip               :+
  1004. Virtual Mode Extensions present       :+
  1005. CPU support I/O breakpoints       :+
  1006. CPU support 4MB pages           :+
  1007. Time Stamp Counter Presents       :+
  1008. CPU have Pentium compatible MSRs   :+
  1009. Machine Check Exception Presents   :-
  1010. CMPXCHG8B instruction support       :+
  1011. APIC on Chip               :-
  1012.  
  1013.  
  1014. -> END of Examples
  1015.  
  1016.  
  1017. Note: NexGen Nx586 never support CPUID.
  1018.  
  1019. Flags Affected: None
  1020.  
  1021. CPU mode: RM,PM,VM,SMM
  1022.  
  1023. Physical Form:         CPUID
  1024. COP (Code of Operation): 0FH A2H
  1025. Clocks:      486s & Pentium  (EAX=1)        : 14
  1026.       486s & Pentium  (EAX=0 or EAX>1)  : 9
  1027.  
  1028.  
  1029.  
  1030.  
  1031. ---------------------------------------------------
  1032. ESC   -     Escape Extrnal Cooprocessors
  1033.  
  1034. CPU:  8086...80386, any Hybrid 486.
  1035. Type of Instruction: User
  1036.  
  1037. Instruction:  ESC Number,R/M
  1038.  
  1039. Description:  This Instruction uses for Link with External Coprocessors
  1040.           Such as NPX. External Coprocessors look at command sequence
  1041.           at get ESC. CPU give Memory Operand sending to A-bus EA
  1042.           doing pseudo-read operation.
  1043.           {     If 2nd Operand is Register then Do Nothing,
  1044.          If 2nd Operand is Memory   then set EA (Effective Address)
  1045.                         in Address Bus   }
  1046.           First operand is Part of Command that Ext. coprocessors get.
  1047.  
  1048. Flags Affected: None
  1049.  
  1050. Example:      ESC 0Fh,DX      means         FSQRT
  1051.  
  1052.  
  1053. Note:    ESC mnemonic was used for 8086 CPU, later all were used alternative
  1054.     mnemonic for cooprocessor instructions, such as FSQRT.
  1055.  
  1056. CPU mode: RM,PM,VM,SMM
  1057.  
  1058. +++++++++++++++++++++++
  1059. Physical Form:
  1060. COP (Code of Operation)     : <1101 1xxx> Postbyte
  1061.  
  1062. Clocks:        ESC  n,Reg    ESC n,Mem8/Mem16
  1063. 8088:           2             8/12+EA
  1064. 286:          9-20              9-20
  1065. 386:          N/A               N/A
  1066. 486:          N/A               N/A
  1067.  
  1068. ---------------------------------------------------
  1069. EXT  -    Extract Bit Field
  1070.  
  1071.  
  1072. CPU: NEC/Sony all  V-series
  1073. Type of Instruction: User
  1074.  
  1075. Instruction:  EXT  start,len
  1076.  
  1077. Description:
  1078.       AX <- BitField [
  1079.                  BASE =  DS:SI
  1080.          START BIT OFFSET =  start
  1081.                LENGTH =  len
  1082.              ];
  1083.  
  1084.  
  1085. Note:    si and start automatically UPDATE
  1086.  
  1087. Flags Affected: None
  1088.  
  1089. CPU mode: RM
  1090.  
  1091. +++++++++++++++++++++++
  1092. Physical Form         : EXT    reg8,reg8
  1093. COP (Code of Operation)     : 0FH 33H  PostByte
  1094.  
  1095.  
  1096. Clocks:        EXT  reg8,reg8
  1097. NEC V20:    26-55
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104. ---------------------------------------------------
  1105. F4X4 - FPU: Multiplicate vector on Matrix 4x4
  1106.  
  1107.  
  1108. FPU:  IIT FPUs.
  1109. Type of Instruction: FPU instruction
  1110.  
  1111. Instruction: F4X4
  1112. Description:
  1113.     ;   This Instruction Multiplicate vector on
  1114.     ; Matrix 4X4
  1115.  
  1116.  _  _        _               _    _  _
  1117. |    |       |            |      |    |
  1118. | Xn |       | A00  A01  A02  A03 |      | X0 |
  1119. | Yn |    =  | A10  A11  A12  A13 |  X   | Y0 |
  1120. | Zn |       | A20  A21  A22  A23 |      | Z0 |
  1121. | Wn |       | A30  A31  A31  A33 |      | W0 |
  1122. |_  _|       |_               _|      |_  _|
  1123.  
  1124.  
  1125.      ; Data fetches/stores from/to FPU registers:
  1126.  
  1127.     # of      F E T C H E S          STORE
  1128.        Register     Bank0 Bank1 Bank2    Bank0
  1129.     ST      X0    A33   A31      Xn
  1130.     ST(1)      Y0    A23   A21      Yn
  1131.     ST(2)      Z0    A13   A11      Zn
  1132.     ST(3)      W0    A03   A01      Wn
  1133.     ST(4)        A32   A30
  1134.     ST(5)        A22   A20
  1135.     ST(6)        A12   A10
  1136.     ST(7)        A02   A00
  1137.  
  1138.  
  1139. Note: See FSBP0,FSBP1,FSBP2 for more information
  1140.  
  1141.  
  1142. FPU Flags Affected:  S
  1143.  
  1144. FPU mode: Any
  1145.  
  1146. Physical Form:         F4X4
  1147. COP (Code of Operation): DBH F1H
  1148. Clocks:       IIT 2c87    : 242
  1149.        IIT 3c87    : 242
  1150.        IIT 3c87SX  : 242
  1151.  
  1152.  
  1153. ---------------------------------------------------
  1154. FCMOVcc      -  Floating Point Conditional Move
  1155.  
  1156. CPU:  P6
  1157. Type of Instruction:  User
  1158.  
  1159. Instruction:  FCMOVcc  dest,sorc
  1160.  
  1161. Description:
  1162.           IF condition(cc) is true THEN dest <- sorc;
  1163.  
  1164.  
  1165. Flags Affected:      Int: None
  1166.           Fp : None
  1167.  
  1168. Note:  Testing Integer flags:
  1169.  
  1170. cc    Meaning        Test Flags        Description
  1171. B    Below        CF=1            <
  1172. NB    Not Below    CF=0            >=
  1173. E    Equal        ZF=1            =
  1174. NE    Not Equal    ZF=0            !=
  1175. BE    Below Equal    (CF=1 .OR. ZF=1)    <=
  1176. NBE    Not BelowEqual    (CF=0 .AND. ZF=0)    >
  1177. U    Unordered    PF=1
  1178. NU    Not Unordered    PF!=1
  1179.  
  1180.  
  1181.  
  1182.  
  1183. CPU mode: RM,PM,VM,SMM
  1184.  
  1185.  
  1186. +++++++++++++++++++++++
  1187. Physical Form & COPs:
  1188.  
  1189. FCMOVB     ST,STi    DA C0+i
  1190. FCMOVE     ST,STi    DA C8+i
  1191. FCMOVBE     ST,STi    DA D0+i
  1192. FCMOVU     ST,STi    DA D8+i
  1193. FCMOVNB     ST,STi    DB C0+i
  1194. FCMOVNE     ST,STi    DB C8+i
  1195. FCMOVNBE ST,STi    DB D0+i
  1196. FCMOVNU     ST,STi    DB D8+i
  1197.  
  1198.  
  1199. Clocks:     N/A
  1200. ---------------------------------------------------
  1201. FCOMI    -  Floating Point Compare setting Integer Flags
  1202.  
  1203. CPU:  P6
  1204. Type of Instruction:  User
  1205.  
  1206. Instruction:  FuCOMIp  ST0,STi
  1207.  
  1208. Description:
  1209.          CASE ( result (compare(ST0,STi) ) OF
  1210.         {          ;    ZF PF CF
  1211.         Not Comparable: 1  1  1
  1212.         ST0 > STi     : 0  0  0
  1213.         ST0 < STi     : 0  0  1
  1214.         ST0 = STi     : 1  0  0
  1215.         }
  1216.  
  1217.          CASE ( FP_stack_status ) OF
  1218.         {          ; SF
  1219.         Overflow      : 1
  1220.         Underflow     : 0
  1221.         Otherwize     : 0
  1222.         }
  1223.  
  1224.          CASE ( instruction ) OF
  1225.         {
  1226.         FCOMI,FUCOMI   : No FP stack adjustment;
  1227.         FCOMIP,FUCOMIP : POP ST;
  1228.         }
  1229.  
  1230.  
  1231. Flags Affected:      Int: CF,ZF,PF,SF
  1232.           Fp : None
  1233.  
  1234.  
  1235. Note: In any case Sign of zero Ignored , so +0.0 = -0.0
  1236.  
  1237.  
  1238. CPU mode: RM,PM,VM,SMM
  1239.  
  1240.  
  1241. +++++++++++++++++++++++
  1242. Physical Form & COPs:
  1243.  
  1244. FCOMI    ST0,STi     DB F0+i
  1245. FCOMIP    ST0,STi     DF F0+i
  1246. FUCOMI    ST0,STi     DB E8+i
  1247. FUCOMIP ST0,STi     DF E8+i
  1248.  
  1249.  
  1250. Clocks:     N/A
  1251. ---------------------------------------------------
  1252. FNSTDW - FPU Not wait Store Device Word register
  1253.  
  1254.  
  1255. FPU:  i387SL Mobile
  1256. Type of Instruction: FPU instruction
  1257.  
  1258. Instruction: FNSTDW dest
  1259. Description:
  1260.     dest <- Device Word
  1261.  
  1262. Format of Device word:
  1263.     bit(s)    Description
  1264.     0-7    Reserved
  1265.      8    S - Status bit:
  1266.             if S=1 then FP device is a static design and OS
  1267.             or APM Bios may set CLK slow to 0 Mhz without
  1268.             lost any data.
  1269.     9-15    Reserved
  1270.  
  1271.  
  1272. Note: Device word register valid only after FNINIT
  1273.  
  1274.  
  1275. FPU Flags Affected: None
  1276.  
  1277. CPU mode: Any
  1278.  
  1279. Physical Form:         FNSTDW     AX
  1280. COP (Code of Operation): DFH E1H
  1281. Clocks:          i387SL Mobile: 13
  1282.  
  1283.  
  1284. ---------------------------------------------------
  1285. FNSTSG - FPU Not wait Store Signature Word register
  1286.  
  1287.  
  1288. FPU:  i387SL Mobile
  1289. Type of Instruction: FPU instruction
  1290.  
  1291. Instruction: FNSTSG dest
  1292. Description:
  1293.     dest <- Signature Word
  1294.  
  1295. Format of Signature word:
  1296.     bit(s)    Description
  1297.      3-0    Revision
  1298.      7-4    Steppin
  1299.     11-8    Family
  1300.     15-12    Version
  1301.  
  1302. Note:
  1303.     For i387(tm) SL Mobile Signature is:
  1304.         Version     = 2
  1305.         Family     = 3   ; 387
  1306.         Stepping = 1   ; Ax step
  1307.         Revision = 0   ; x0 step
  1308.                 i.e i387(tm) SL is A0 step
  1309.  
  1310. Note: This FPU is out of life
  1311.  
  1312.  
  1313. Note: Signature word register valid only after FNINIT
  1314.  
  1315.  
  1316. FPU Flags Affected: None
  1317.  
  1318. CPU mode: Any
  1319.  
  1320. Physical Form:         FNSTSG     AX
  1321. COP (Code of Operation): DFH E2H
  1322. Clocks:          i387SL Mobile: 13
  1323.  
  1324.  
  1325. ---------------------------------------------------
  1326. FPO2  -     Floating Point Operations 2nd Way
  1327.  
  1328.  
  1329. CPU: NEC/Sony  all V-series
  1330. Type of Instruction: User
  1331.  
  1332. Instruction:  FPO2  fp_op,mem
  1333.  
  1334. Description:
  1335.           This instruction was building for sending FP commands to
  1336.           NEC NPX which never be realized
  1337.  
  1338.  
  1339. Flags Affected: None
  1340.  
  1341. CPU mode: RM
  1342.  
  1343. +++++++++++++++++++++++
  1344. Physical Form         : FPO2 imm4,reg/mem
  1345. COP (Code of Operation)     :
  1346.             If imm4 in range 0-7 then
  1347.                 66H     mmFFFMMM there FFF is imm4.
  1348.             If imm4 in range 7-F then
  1349.                 67H     mmFFFMMM there FFF is imm4.
  1350.  
  1351.  
  1352. Clocks:        FPO2  imm4,reg/mem
  1353. NEC V20:         2/11
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360. ---------------------------------------------------
  1361. FRICHOP - FPU: Round to Integer chop method
  1362.  
  1363.  
  1364. FPU:  Cyrix FPUs and 486s with FPU on chip
  1365. Type of Instruction: FPU instruction
  1366.  
  1367. Instruction: FRICHOP
  1368. Description:
  1369.     ST <- ROUND ( ST,CHOP )
  1370.  
  1371. Note:
  1372.     This instruction calculate rounding ST toward zero
  1373.     i.e.  ignoring part righter that decimal .
  1374.  
  1375. Examples:
  1376.  
  1377.      1.2   ->   1.0
  1378.     -1.2   ->  -1.0
  1379.      3.0   ->   3.0
  1380.      0.0   ->   0.0
  1381.      1.5   ->   1.0
  1382.     -2.0   ->  -2.0
  1383.  
  1384.  
  1385. FPU Flags Affected:  S,P,D,I,C1
  1386.  
  1387. FPU mode: Any
  1388.  
  1389. Physical Form:         FRICHOP
  1390. COP (Code of Operation): DDH FCH
  1391. Clocks:          Cx83D87  : 15
  1392.           Cx83S87  : 15
  1393.           CxEMC87  : 15
  1394.           Cx487DLC :
  1395.  
  1396.  
  1397. ---------------------------------------------------
  1398. FRINEAR - FPU: Round to Integer Nearest method
  1399.  
  1400.  
  1401. FPU:  Cyrix FPUs and 486s with FPU on chip
  1402. Type of Instruction: FPU instruction
  1403.  
  1404. Instruction: FRINEAR
  1405. Description:
  1406.     ST <- ROUND ( ST,NEAREST )
  1407.  
  1408. Note:
  1409.     This instruction calculate rounding ST toward nearest
  1410.  
  1411. Examples:
  1412.  
  1413.      1.2   ->   1.0
  1414.     -1.2   ->  -1.0
  1415.      3.0   ->   3.0
  1416.      0.0   ->   0.0
  1417.      1.5   ->   1.0
  1418.      1.8   ->   2.0
  1419.     -2.0   ->  -2.0
  1420.  
  1421.  
  1422. FPU Flags Affected:  S,P,D,I,C1
  1423.  
  1424. FPU mode: Any
  1425.  
  1426. Physical Form:         FRINEAR
  1427. COP (Code of Operation): DFH FCH
  1428. Clocks:          Cx83D87  : 15
  1429.           Cx83S87  : 15
  1430.           CxEMC87  : 15
  1431.           Cx487DLC :
  1432.  
  1433.  
  1434. ---------------------------------------------------
  1435. FRINT2 - FPU: Round to Integer
  1436.  
  1437.  
  1438. FPU:  Cyrix FPUs and 486s with FPU on chip
  1439. Type of Instruction: FPU instruction
  1440.  
  1441. Instruction: FRINT2
  1442. Description:
  1443.     IF ( exact half ) THEN
  1444.         {
  1445.         ST <- SIGN(ST) * ROUND(ABS(ST)+0.5,NEAREST)
  1446.         }
  1447.         ELSE
  1448.         {
  1449.         ST <- ROUND ( ST,NEAREST )
  1450.         }
  1451.     END
  1452.  
  1453. Note:
  1454.     This instruction calculate rounding ST toward nearest,
  1455.     but if number is exact half then this instruction round
  1456.     it toward signed infinity. Sign of this infinity is same
  1457.     with sign of number.
  1458.  
  1459. Examples:
  1460.  
  1461.      1.2   ->   1.0
  1462.     -1.2   ->  -1.0
  1463.      3.0   ->   3.0
  1464.      0.0   ->   0.0
  1465.      1.5   ->   2.0
  1466.      1.8   ->   2.0
  1467.     -2.0   ->  -2.0
  1468.     -1.5   ->  -2.0
  1469.  
  1470. FPU Flags Affected:  S,P,D,I,C1
  1471.  
  1472. FPU mode: Any
  1473.  
  1474. Physical Form:         FRINT2
  1475. COP (Code of Operation): DBH FCH
  1476. Clocks:          Cx83D87  : 15
  1477.           Cx83S87  : 15
  1478.           CxEMC87  : 15
  1479.           Cx487DLC :
  1480.  
  1481.  
  1482. ---------------------------------------------------
  1483. FRSTPM - FPU Reset Protected Mode
  1484.  
  1485.  
  1486. FPU:  i287XL i287XLT
  1487. Type of Instruction: FPU instruction
  1488.  
  1489. Instruction: FRSTPM
  1490. Description:
  1491.     Reset Cooprocessor from Protected Mode
  1492.     to Real Address mode.
  1493.  
  1494. FPU Flags Affected: None
  1495.  
  1496. CPU mode:Any ???
  1497.  
  1498. Physical Form:         FRSTPM
  1499. COP (Code of Operation): DBH E5H
  1500. Clocks:          i287XL   : 12
  1501.           i287XLT  : 12
  1502.  
  1503.  
  1504. ---------------------------------------------------
  1505. FSBP0 - FPU: Set Bank pointer to Bank # 0
  1506.  
  1507.  
  1508. FPU:  IIT FPUs.
  1509. Type of Instruction: FPU instruction
  1510.  
  1511. Instruction: FSBP0
  1512. Description:
  1513.     ;   This Instruction set current bank pointer to
  1514.     ; Bank # 0.
  1515.  
  1516.     ;   Each bank contain eight 80bit registers
  1517.     ;   There are 3 banks (0,1,2) in Chip
  1518.  
  1519.     ;   After initialization FPU select bank # 0.
  1520.  
  1521.  
  1522. FPU Flags Affected:  None
  1523.  
  1524. FPU mode: Any
  1525.  
  1526. Physical Form:         FSBP0
  1527. COP (Code of Operation): DBH E8H
  1528. Clocks:       IIT 2c87    : 6
  1529.        IIT 3c87    : 6
  1530.        IIT 3c87SX  : 6
  1531.  
  1532.  
  1533. ---------------------------------------------------
  1534. FSBP1 - FPU: Set Bank pointer to Bank # 1
  1535.  
  1536.  
  1537. FPU:  IIT FPUs.
  1538. Type of Instruction: FPU instruction
  1539.  
  1540. Instruction: FSBP1
  1541. Description:
  1542.     ;   This Instruction set current bank pointer to
  1543.     ; Bank # 1.
  1544.  
  1545.     ;   Each bank contain eight 80bit registers
  1546.     ;   There are 3 banks (0,1,2) in Chip
  1547.  
  1548.     ;   After initialization FPU select bank # 0.
  1549.  
  1550.  
  1551. FPU Flags Affected:  None
  1552.  
  1553. FPU mode: Any
  1554.  
  1555. Physical Form:         FSBP1
  1556. COP (Code of Operation): DBH EBH
  1557. Clocks:       IIT 2c87    : 6
  1558.        IIT 3c87    : 6
  1559.        IIT 3c87SX  : 6
  1560.  
  1561.  
  1562. ---------------------------------------------------
  1563. FSBP2 - FPU: Set Bank pointer to Bank # 2
  1564.  
  1565.  
  1566. FPU:  IIT FPUs.
  1567. Type of Instruction: FPU instruction
  1568.  
  1569. Instruction: FSBP2
  1570. Description:
  1571.     ;   This Instruction set current bank pointer to
  1572.     ; Bank # 2.
  1573.  
  1574.     ;   Each bank contain eight 80bit registers
  1575.     ;   There are 3 banks (0,1,2) in Chip
  1576.  
  1577.     ;   After initialization FPU select bank # 0.
  1578.  
  1579.  
  1580. FPU Flags Affected:  None
  1581.  
  1582. FPU mode: Any
  1583.  
  1584. Physical Form:         FSBP2
  1585. COP (Code of Operation): DBH EAH
  1586. Clocks:       IIT 2c87    : 6
  1587.        IIT 3c87    : 6
  1588.        IIT 3c87SX  : 6
  1589.  
  1590.  
  1591. ---------------------------------------------------
  1592. IBTS    -  Insert Bits String
  1593.  
  1594.  
  1595. CPU:  80386 step A0-B0 only
  1596. Type of Instruction: User
  1597.  
  1598. Instruction:  IBTS base,bitoffset,len,sorc
  1599.  
  1600. Description:
  1601.          Write bit string length <len> bits from
  1602.          <sorc> [bits <len> .. 0 ]    (lowest bits) to bitfield,
  1603.          defined by <base> and bitsoffset <bitoffset> from this base
  1604.          to start of the field to write. String write from this start
  1605.          field bit to higher memory addresses or register bits.
  1606.  
  1607.  
  1608. Flags Affected: None
  1609.  
  1610. CPU mode: RM,PM,VM
  1611.  
  1612. +++++++++++++++++++++++
  1613. Physical Form:      IBTS    r/m16,AX,CL,r16
  1614.           IBTS    r/m32,EAX,CL,r32
  1615. COP (Code of Operation)     : 0FH A7H Postbyte
  1616.  
  1617. Clocks:        IBTS
  1618. 80386:        12/19
  1619.  
  1620.  
  1621. ---------------------------------------------------
  1622. ICEBP  - PWI Mode BreakPoint, ICE address space
  1623.  
  1624.  
  1625. CPU:  IBM 486SLC2
  1626. Type of Instruction: System
  1627.  
  1628. Instruction: ICEBP
  1629. Description:
  1630.     IF (condition) THEN  ; see condition below
  1631.            {
  1632.            SAVE STATUS OF EXECUTION TO ICE space;
  1633.            ENTER SMM;
  1634.            }
  1635.        ELSE
  1636.           {
  1637.           INT 1;
  1638.           }
  1639.        END
  1640.  
  1641. Note:    This condition can be set before execution this instruction:
  1642.     CPL=0
  1643.     MSR1000H.EPCEA=1
  1644.     MSR1000H.EPWI=1
  1645.  
  1646.  
  1647. Flags Affected: None
  1648.  
  1649. CPU mode: RM,PM0
  1650.  
  1651. Physical Form:         ICEBP
  1652. COP (Code of Operation): F1H
  1653. Clocks:     IBM 486SLC2   : 460
  1654.  
  1655.  
  1656. ---------------------------------------------------
  1657. ICEBP  -  In-Circuit Emulator Breakpoint
  1658.  
  1659.  
  1660. CPU:  some models of i486, i386
  1661. Type of Instruction: System
  1662.  
  1663. Instruction: ICEBP
  1664. Description:
  1665.     IF (condition) THEN  ; see condition below
  1666.            {
  1667.            CHANGED TO THE ICE instruction mode;
  1668.            }
  1669.        ELSE
  1670.           {
  1671.           INT 1;
  1672.           }
  1673.        END
  1674.  
  1675. Note:    Condition  is  DR7.bit12=1
  1676.  
  1677. Note: This instruction very usefull to debbuging as Single-Byte Interrupt
  1678.       but it generate never int 3, but int 1.
  1679.  
  1680. Note: Frank van Gilluwe in his book "The PC Undocument", 1994 year say
  1681.       that this instruction is VERY UNDOCUMENT.
  1682.  
  1683. Flags Affected: None
  1684.  
  1685. CPU mode: RM,PM0
  1686.  
  1687. Physical Form:         ICEBP
  1688. COP (Code of Operation): F1H
  1689. Clocks:               : N/A
  1690.  
  1691.  
  1692. ---------------------------------------------------
  1693. ICERET    - Return from PWI mode, ICE space
  1694.  
  1695.  
  1696. CPU: IBM 486SLC2
  1697. Type of Instruction: System Operation
  1698.             (Work only then CPL=0)
  1699.  
  1700. Instruction: ICERET
  1701. Description:
  1702.           Load All Registers (Include Shadow Registers) from Table
  1703.           Which Begin on  place pointed ES:EDI, and return from PWI
  1704.           mode.
  1705.  
  1706. Format of ICERET Table:
  1707.  
  1708.            Offset  Len  Description
  1709.         0H    4    CR0
  1710.         4H    4    EFLAGS
  1711.         8H    4    EIP
  1712.         CH    4    EDI
  1713.         10H    4    ESI
  1714.         14H    4    EBP
  1715.         18H    4    ESP
  1716.         1CH    4    EBX
  1717.         20H    4    EDX
  1718.         24H    4    ESX
  1719.         28H    4    EAX
  1720.         2CH    4    DR6
  1721.         30H    4    DR7
  1722.         34H    4    TR     (16 bit, zero filled up)
  1723.         38H    4    LDT  ---------
  1724.         3CH    4    GS   ---------
  1725.         40H    4    FS   ---------
  1726.         44H    4    DS   ---------
  1727.         48H    4    SS   ---------
  1728.         4CH    4    CS   ---------
  1729.         50H    4    ES   ---------
  1730.         54H    4    TSS.attrib
  1731.         58H    4    TSS.base
  1732.         5CH    4    TSS.limit
  1733.         60H    4    Reserved
  1734.         64H    4    IDT.base
  1735.         68H    4    IDT.limit
  1736.         6CH    4    REP OUTS overrun flag
  1737.         70H    4    GDT.base
  1738.         74H    4    GDT.limit
  1739.         78H    4    LDT.attrib
  1740.         7CH    4    LDT.base
  1741.         80H    4    LDT.limit
  1742.         84H    4    GS.attrib
  1743.         88H    4    GS.base
  1744.         8CH    4    GS.limit
  1745.         90H    4    FS.attrib
  1746.         94H    4    FS.base
  1747.         98H    4    FS.limit
  1748.         9CH    4    DS.attrib
  1749.         A0H    4    DS.base
  1750.         A4H    4    DS.limit
  1751.         A8H    4    SS.attrib
  1752.         ACH    4    SS.base
  1753.         B0H    4    SS.limit
  1754.         B4H    4    CS.attrib
  1755.         B8H    4    CS.base
  1756.         BCH    4    CS.limit
  1757.         C0H    4    ES.attrib
  1758.         C4H    4    ES.base
  1759.         C8H    4    ES.limit
  1760.                 Unknown Unusable area
  1761.                 ;; Temporary registers:
  1762.         100H    4    TST
  1763.         104H    4    IDX
  1764.         108H    4    TMPH
  1765.         10CH    4    TMPG
  1766.         110H    4    TMPF
  1767.         114H    4    TMPE
  1768.         118H    4    TMPD
  1769.         11CH    4    TMPC
  1770.         120H    4    TMPB
  1771.         124H    4    TMPA
  1772.  
  1773.         128H    4    CR2
  1774.         12CH    4    CR3
  1775.         130H    4    MSR1001H (31-0)
  1776.         134H    4    MSR1001H (63-32)
  1777.         138H    4    MSR1000H (15-0)
  1778.         13CH    4    DR0
  1779.         140H    4    DR1
  1780.         144H    4    DR2
  1781.         148H    4    DR3
  1782.         14CH    4    PEIP
  1783.         Length of table is 150H bytes.
  1784.  
  1785. Note: For descriptor format refer to LOADALL and RES3 instructions.
  1786.  
  1787.  
  1788. Flags Affected: All (FLAGS Register Reload)
  1789.  
  1790. CPU mode: SMM
  1791.  
  1792. Physical Form:         ICERET
  1793. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  1794. Clocks:     IBM 486SLC2   : 440
  1795.  
  1796.  
  1797. ---------------------------------------------------
  1798. INS  -    Insert Bit String
  1799.  
  1800.  
  1801. CPU: NEC/Sony  all V-series
  1802. Type of Instruction: User
  1803.  
  1804. Instruction:  INS  start,len
  1805.  
  1806. Description:
  1807.       BitField [         BASE =  ES:DI
  1808.          START BIT OFFSET =  start
  1809.                LENGTH =  len
  1810.              ]   <-     AX [ bits= (len-1)..0]
  1811.  
  1812.  
  1813. Note:    di and start automatically UPDATE
  1814. Note:    Alternative Name of this instruction is NECINS
  1815.  
  1816. Flags Affected: None
  1817.  
  1818. CPU mode: RM
  1819.  
  1820. +++++++++++++++++++++++
  1821. Physical Form         : INS    reg8,reg8
  1822. COP (Code of Operation)     : 0FH 31H  PostByte
  1823.  
  1824.  
  1825. Clocks:        INS  reg8,reg8
  1826. NEC V20:    31-117
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832. ---------------------------------------------------
  1833. INVD  - Invalidate Cache Buffer
  1834.  
  1835.  
  1836. CPU:  I486 +
  1837. Type of Instruction: System
  1838.  
  1839. Instruction: INVD
  1840. Description:
  1841.          FLUSH INTERNAL CACHE
  1842.    ( It means that all lines of internal caches sets as
  1843.     invalid )
  1844.      SIGNAL EXTERNAL CACHE TO FLUSH
  1845.  
  1846.  
  1847. Notes: This instruction not work in Real Mode and  in
  1848. Protected mode work only in ring 0 ;
  1849.  
  1850. Flags Affected: None
  1851.  
  1852. CPU mode: PM0,SMM?
  1853.  
  1854. Physical Form:         INVD
  1855. COP (Code of Operation): 0FH 08H
  1856. Clocks: Cyrix Cx486SLC : 4
  1857.           i486     : 4
  1858.           Pentium  : 15
  1859.  
  1860.  
  1861. ---------------------------------------------------
  1862. INVLPG    - Invalidate Page Entry In TLB
  1863.  
  1864.  
  1865. CPU:  I486 +
  1866. Type of Instruction: System
  1867.  
  1868. Instruction: INVLPG mem
  1869. Description:
  1870.     IF found in data or code (if both) (or common if single)
  1871.        TLB entry with linear address (page part) same as
  1872.        memory operand <mem> then mark this entry as Invalid;
  1873.  
  1874. Notes: This instruction not work in Real Mode and  in
  1875. Protected mode work only in ring 0 ;
  1876.  
  1877. Flags Affected: None
  1878.  
  1879. CPU mode: RM,PM,VM,SMM
  1880.  
  1881. Physical Form:         INVLPG mem
  1882. COP (Code of Operation): 0FH 01H mm111mmm
  1883. Clocks: Cyrix Cx486SLC : 4
  1884.           i486     : 12 if hit
  1885.                : 11 if not hit
  1886.           Pentium  : 25
  1887.  
  1888. ---------------------------------------------------
  1889. LOADALL     - Load All Registers
  1890.  
  1891.  
  1892. CPU:  Intel 386+ +all clones
  1893.  
  1894. Type of Instruction: System
  1895.             (Work only then CPL=0)
  1896.  
  1897. Instruction: LOADALL
  1898. Description:
  1899.           Load All Registers (Include Shadow Registers) from Table
  1900.           Which Begin on  place pointed ES:EDI
  1901.  
  1902. Format of LOADALL Table:
  1903.  
  1904.            Offset  Len  Description
  1905.         0H    4    CR0
  1906.         4H    4    EFLAGS
  1907.         8H    4    EIP
  1908.         CH    4    EDI
  1909.         10H    4    ESI
  1910.         14H    4    EBP
  1911.         18H    4    ESP
  1912.         1CH    4    EBX
  1913.         20H    4    EDX
  1914.         24H    4    ESX
  1915.         28H    4    EAX
  1916.         2CH    4    DR6
  1917.         30H    4    DR7
  1918.         34H    4    TR     (16 bit, zero filled up)
  1919.         38H    4    LDT  ---------
  1920.         3CH    4    GS   ---------
  1921.         40H    4    FS   ---------
  1922.         44H    4    DS   ---------
  1923.         48H    4    SS   ---------
  1924.         4CH    4    CS   ---------
  1925.         50H    4    ES   ---------
  1926.         54H    4    TSS.attrib
  1927.         58H    4    TSS.base
  1928.         5CH    4    TSS.limit
  1929.         60H    4    0s
  1930.         64H    4    IDT.base
  1931.         68H    4    IDT.limit
  1932.         6CH    4    0s
  1933.         70H    4    GDT.base
  1934.         74H    4    GDT.limit
  1935.         78H    4    LDT.attrib
  1936.         7CH    4    LDT.base
  1937.         80H    4    LDT.limit
  1938.         84H    4    GS.attrib
  1939.         88H    4    GS.base
  1940.         8CH    4    GS.limit
  1941.         90H    4    FS.attrib
  1942.         94H    4    FS.base
  1943.         98H    4    FS.limit
  1944.         9CH    4    DS.attrib
  1945.         A0H    4    DS.base
  1946.         A4H    4    DS.limit
  1947.         A8H    4    SS.attrib
  1948.         ACH    4    SS.base
  1949.         B0H    4    SS.limit
  1950.         B4H    4    CS.attrib
  1951.         B8H    4    CS.base
  1952.         BCH    4    CS.limit
  1953.         C0H    4    ES.attrib
  1954.         C4H    4    ES.base
  1955.         C8H    4    ES.limit
  1956.         CCH    4    Length of table
  1957.         D0H    30h    Unused,not loaded
  1958.         100H    4    Temporary Register IST
  1959.         104H    4    Temporary Register I
  1960.         108H    4    Temporary Register H
  1961.         10CH    4    Temporary Register G
  1962.         110H    4    Temporary Register F
  1963.         114H    4    Temporary Register E
  1964.         118H    4    Temporary Register D
  1965.         11CH    4    Temporary Register C
  1966.         120H    4    Temporary Register B
  1967.         124H    4    Temporary Register A
  1968.  
  1969.  
  1970. Format    of Attrib field:
  1971.  
  1972.            Byte    Description
  1973.            0    0s
  1974.            1    AR (Access Right) byte in the Descriptor format
  1975.             Note:
  1976.                P bit is a valid bit
  1977.                if valid bit=0 then Shadow Register is invalid and
  1978.                   INT 0DH - General Protection Fault call
  1979.                DPL of SS,CS det. CPL
  1980.            2-3    0s
  1981.  
  1982.  
  1983. Flags Affected: All (FLAGS Register Reload)
  1984.  
  1985. CPU mode: RM,PM0
  1986.  
  1987. Physical Form:         LOADALL
  1988. COP (Code of Operation): 0FH 07H
  1989. Clocks:          i386XX   : n/a
  1990.           i486XX   : n/a
  1991.  
  1992. Note: This operation used 102 data transfer cycles on 32bit bus
  1993.       Typical clocks:
  1994.           i386SX: ~350
  1995.           i386DX: ~290
  1996.           i486XX: ~220
  1997.  
  1998.  
  1999. ---------------------------------------------------
  2000. LOADALL     - Load All Registers From Table
  2001.  
  2002.  
  2003. CPU:  Intel 80286 and all its clones
  2004.  
  2005. Type of Instruction: System
  2006.             (Work only then CPL=0)
  2007.  
  2008. Instruction: LOADALL
  2009. Description:
  2010.           Load All Registers (Include Shadow Registers) from Table
  2011.           Which Begin on  000800H  Address, Len of this table is
  2012.           66H
  2013.  
  2014. Format of LOADALL Table:
  2015.  
  2016.            Address    Len  Description
  2017.         800H    6    None
  2018.         806H    2    MSW
  2019.         808H    14    None
  2020.         816H    2    TR
  2021.         818H    2    FLAGS
  2022.         81AH    2    IP
  2023.         81CH    2    LDTR
  2024.         81EH    2    DS
  2025.         820H    2    SS
  2026.         822H    2    CS
  2027.         824H    2    ES
  2028.         826H    2    DI
  2029.         828H    2    SI
  2030.         82AH    2    BP
  2031.         82CH    2    SP
  2032.         82EH    2    BX
  2033.         830H    2    DX
  2034.         832H    2    CX
  2035.         834H    2    AX
  2036.         836H    6    ES Shadow Descriptor
  2037.         83CH    6    CS Shadow Descriptor
  2038.         842H    6    SS Shadow Descriptor
  2039.         848H    6    DS Shadow Descriptor
  2040.         84EH    6    GDTR
  2041.         854H    6    LDT Shadow Descriptor
  2042.         85AH    6    IDTR
  2043.         860H    6    TSS Shadow Descriptor
  2044.  
  2045. Format    of Shadow Descriptor:
  2046.  
  2047.            Byte    Description
  2048.            0-2    24bit Phisical Address
  2049.         3    AR (Access Right) byte
  2050.            4-5    16bit Segment Limit
  2051.  
  2052.  
  2053. Format    of GDTR and IDTR:
  2054.  
  2055.            Byte    Description
  2056.            0-2    24bit Phisical Address
  2057.         3    0s
  2058.            4-5    16bit Segment Limit
  2059.  
  2060.  
  2061. Note: Using this instruction we may turn on "Big Real Mode" i.e. mode then
  2062. PG=1,PE=0,cpl=0. This mode very usefull,But Pentium never  support this
  2063. instruction.
  2064.  
  2065.  
  2066. Flags Affected: All (FLAGS Register Reload)
  2067.  
  2068. CPU mode: RM,PM0
  2069.  
  2070. Physical Form:         LOADALL
  2071. COP (Code of Operation): 0FH 05H
  2072. Clocks:          80286    : 195
  2073.  
  2074.  
  2075. ---------------------------------------------------
  2076. MOVSPA      -  Move Stack Pointer After Bank Switched
  2077.  
  2078. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  2079. Type of Instruction: System
  2080.  
  2081. Instruction:  MOVSPA
  2082.  
  2083. Description:  This instruction transfer     both SS and SP     of the old register
  2084.           bank to new register bank after the bank has been switched by
  2085.           interrupt or BRKCS instruction.
  2086.  
  2087.  
  2088.  
  2089. Flags Affected:     None
  2090.  
  2091. CPU mode: RM
  2092.  
  2093. +++++++++++++++++++++++
  2094. Physical Form:    MOVSPA
  2095. COP (Code of Operation)     : 0Fh 25h
  2096.  
  2097. Clocks:     16
  2098.  
  2099.  
  2100. ---------------------------------------------------
  2101. MOVSPB      -  Move Stack Pointer Before Bamk Switching
  2102.  
  2103. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  2104. Type of Instruction: System
  2105.  
  2106. Instruction:  MOVSPB  Number_of_bank
  2107.  
  2108. Description:  The MOVSPB instruction transfers the current SP and SS before
  2109.           the bank switching to new register bank.
  2110.  
  2111. Note:          New Register Bank Number indicated by lower 3bit of Number_of_
  2112.           _bank.
  2113.  
  2114. Note:          See BRKCS instruction for more info about banks.
  2115.  
  2116.  
  2117. Flags Affected:     None
  2118.  
  2119. CPU mode: RM
  2120.  
  2121. +++++++++++++++++++++++
  2122. Physical Form:    MOVSPB      reg16
  2123. COP (Code of Operation)     : 0Fh 95h <1111 1RRR>
  2124.  
  2125. Clocks:     11
  2126.  
  2127.  
  2128. ---------------------------------------------------
  2129. NOT1  -     Invert a Specified bit
  2130.  
  2131.  
  2132. CPU: NEC/Sony  all  V-series
  2133. Type of Instruction: User
  2134.  
  2135. Instruction:  NOT1 dest,bitnumb
  2136.  
  2137. Description:
  2138.         (BIT bitnumb OF dest) <-  NOT (BIT bitnumb OF dest);
  2139.  
  2140.  
  2141. Flags Affected: None
  2142.  
  2143.  
  2144. CPU mode: RM
  2145.  
  2146. +++++++++++++++++++++++
  2147. Physical Form:           NOT1 reg/mem8,CL
  2148. COP (Code of Operation)     : 0FH 16H  Postbyte
  2149.  
  2150. Physical Form:           NOT1 reg/mem8,imm8
  2151. COP (Code of Operation)     : 0FH 1EH  Postbyte imm8
  2152.  
  2153. Physical Form:           NOT1 reg/mem16,CL
  2154. COP (Code of Operation)     : 0FH 17H  Postbyte
  2155.  
  2156. Physical Form:           NOT1 reg/mem16,imm8
  2157. COP (Code of Operation)     : 0FH 1FH  Postbyte  imm8
  2158.  
  2159.  
  2160. Clocks:                 NOT1
  2161.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  2162. NEC V20:      4/18     5/19          4/18         5/19
  2163.  
  2164.  
  2165. ---------------------------------------------------
  2166. RDMSR  - Read From Model Specified Register
  2167.  
  2168.  
  2169. CPU:  Pentium (tm), IBM 386SLC,486SLC,486SLC2
  2170. Type of Instruction: System
  2171.  
  2172. Instruction: RDMSR
  2173. Description:
  2174.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  2175.           {
  2176.           EDX:EAX <- MSR [ECX];
  2177.           }
  2178.         ELSE
  2179.           {
  2180.           General Protection Fault  INT 0DH (0)
  2181.           }
  2182.     END
  2183.  
  2184.  
  2185. Valid number Of MSR is:
  2186.     Pentium:  0-2,4-0Eh,10h-13h
  2187.     IBM 486SLC2:  1000H-1002H
  2188.     IBM 386SLC:      1000H-1001H
  2189.     IBM 486SLC:      1000H-1001H
  2190.  
  2191.  
  2192. Flags Affected: None
  2193.  
  2194. CPU mode: RM,PM0,SMM
  2195.  
  2196. Physical Form:         RDMSR
  2197. COP (Code of Operation): 0FH 32H
  2198. Clocks:         Pentium   : 20-24
  2199.  
  2200. Note: The MSR # 3,0fh and >13h are reserved. Do not execute RDMSR/WRMSR with
  2201.       this values.
  2202.  
  2203.       Register    Description
  2204.  
  2205.       MSR 0  is Machine check Exception Address register (Read only)
  2206.         bits    Description
  2207.         63..32    Reserved
  2208.         31..0    Machine Check Phisical Address
  2209.  
  2210.       MSR 1  is Machine Check Type register (Read Only)
  2211.         bits    Description
  2212.         63..5    Reserved
  2213.         4    LOCK
  2214.             =1 if bus cycle called Machine Check was Locked
  2215.             =0 if --//-- not locked (normal)
  2216.         3    M/IO# \
  2217.         2    D/C#     State of output pins in bus cycle called
  2218.         1    W/R#  /     Machine check
  2219.         0    CHK  (Check)
  2220.             =1 after last read MSR 1 was Machine Check
  2221.             Note: This bit Clearing on reading
  2222.  
  2223.         Note: Pentium OverDrive difference
  2224.         5    FERI   (Fun Error Indicator)
  2225.             initialazed after RESET as 0. If temperature
  2226.             of CHIP > ~75'C then set this bit to 1 and this
  2227.             bit still will 1 before Next RESET.
  2228.             This bit used FANMONIT.EXE utility shipped with
  2229.             PODP5V.
  2230.  
  2231.  
  2232.       MSR 2,4,5,6,7,8,9,Ah,Bh,Ch,Dh,Eh used to perform Cache,TLB,BTB testing.
  2233.          This registers named Test Registers 0,2-C.
  2234.  
  2235.       MSR Eh  is Test Register 12 (TR 12) (Read/Write)
  2236.         bits    Description
  2237.         63..10    Reserved  (should be zero)
  2238.  
  2239.         9    ITD
  2240.         8    FE
  2241.         7    FDP
  2242.         6    AHD
  2243.         5    Reserved
  2244.         4    Reserved
  2245.         3    CI
  2246.         2    SE
  2247.         1    TR (Tracing Control)
  2248.             After reset clear to zero.
  2249.             This bit enable/disable special branch trace
  2250.             message cycle which generating when BTB hit.
  2251.             =0 disable
  2252.             =1 enable
  2253.         0    NBP
  2254.  
  2255.       MSR 10h is Time Stamp Counter  (TSC) (Read/Write)
  2256.         Time Stamp Counter (as all other MSRs) is clearing to 0 when
  2257.         RESET pin shutdown and unchanged when INIT pin shutdown.
  2258.         TSC is incremented every CPU core clock cycle.
  2259.  
  2260.       MSR 11h is Control/Event Select Register (CESR) (Read/Write)
  2261.         Init value after reset = 00000000000000000h
  2262.         bits    Description
  2263.         63..25    Reserved
  2264.         24    Counting Method (Counter #1)
  2265.             =1 count CPU cycles
  2266.             =0 count events
  2267.         23    Allow count in CPL=3 (Counter #1)
  2268.             =1 Yes
  2269.             =0 No
  2270.         22    Allow count in CPL<3 (Counter #1)
  2271.             =1 Yes
  2272.             =0 No
  2273.         21..16    Event Type for Counter #1 (see below)
  2274.         15..9    Reserved
  2275.         8    Counting Method (Counter #0)
  2276.             =1 count CPU cycles
  2277.             =0 count events
  2278.         7    Allow count in CPL=3 (Counter #0)
  2279.             =1 Yes
  2280.             =0 No
  2281.         6    Allow count in CPL<3 (Counter #0)
  2282.             =1 Yes
  2283.             =0 No
  2284.         5..0    Event Type for counter #0
  2285.             Value    Event Type
  2286.             00h    Data Read
  2287.             01h    Data Write
  2288.             02h    Data TLB miss
  2289.             03h    Data Read Miss
  2290.             04h    Data Write miss
  2291.             05h    Write hit to Modified or Exclusive Cacheline
  2292.             06h    Data cache lines written back
  2293.             07h    Data cache snoops
  2294.             08h    Data cache snoops hit
  2295.             09h    Memory access in both pipes
  2296.             0Ah    Data bank access conflict
  2297.             0Bh    Misaligned data memory references
  2298.             0Ch    Code read
  2299.             0Dh    Code TLB miss
  2300.             0Eh    Code cache miss
  2301.             0Fh    Any segment register load
  2302.             10h    Segment descriptor cache accessed
  2303.             11h    Segment descriptor cache hit
  2304.             12h    Branches
  2305.             13h    BTB hit
  2306.             14h    Taken branch or BTB hit
  2307.             15h    Pipeline flushes
  2308.             16h    Instructions executed
  2309.             17h    Instruction executed in V pipes
  2310.             18h    Bus utilization
  2311.             19h    Pipeline stalled by write backups
  2312.             1Ah    Pipeline stalled by data memory read
  2313.             1Bh    Pipeline stalled by write to M or E line
  2314.             1Ch    Locked bus cycle
  2315.             1Dh    I/O cycle
  2316.             1Eh    Noncachable memory references
  2317.             1Fh    Pipeline stalled by AGI
  2318.             20h-21h    Reserved
  2319.             22h    FP operations
  2320.             23h    Breakpoint 0 match
  2321.             24h    Breakpoint 1 match
  2322.             25h    Breakpoint 2 match
  2323.             26h    Breakpoint 3 match
  2324.             27h    Hardware interrupt
  2325.             28h    Data read or data write
  2326.             29h    Data read/write miss
  2327.             2Ah-3Fh Reserved
  2328.  
  2329.  
  2330.       MSR 12h is Counter #0 (Read/Write)
  2331.         bits    Description
  2332.         63..??    Reserved
  2333.         ??..0    Current counter value
  2334.  
  2335.       MSR 13h is Counter #1 (Read/Write)
  2336.         bits    Description
  2337.         63..??    Reserved
  2338.         ??..0    Current counter value
  2339.  
  2340.       MSR 1000H is Processor Operation Register (IBM only)
  2341.         (486SLC/486SLC2/386SLC)
  2342.         bits    Description
  2343.         63..19    Reserved
  2344.         18    LWPLA (Low Power PLA) (reserved on IBM 386SLC)
  2345.         17    BUSRD (Bus Read)      (reserved on IBM 386SLC)
  2346.         16    CPGE  (Cache Parity Generate Error)
  2347.             (reserved on IBM 386SLC)
  2348.         15    ECNPX (Enable cachebility of NPX operands)
  2349.         14    EPWIA (Enable PWI ADS)
  2350.         13    ELPWH (Enable Low Power Halt Mode)
  2351.         12    XTOUT (Extend Out Instruction)
  2352.         11    CRLD  (Cache reload bit)
  2353.         10    EIKEN (Enable internal KEN#)
  2354.         9    DSCL  (Disable cache Lock Mode)
  2355.         8    Reserved
  2356.         7    CE     (Cache enable)
  2357.         6    EDBS   (Enable DBCS)
  2358.         5    EPWI   (Enable Power Interrupt)
  2359.         4    EFSP   (Enable Flush Snooping)
  2360.         3    ENSP   (Enable Snoop Input)
  2361.         2    A20M   (Address line 20 Mask)
  2362.         1    CPCE   (Cache Parity Checking Enable)
  2363.         0    CPE    (Cache Parity Error)
  2364.  
  2365.       MSR 1001H is Cache Region Control Register  (IBM only)
  2366.         ( IBM 386SLC/486SLC/486SLC2)
  2367.         bits    description
  2368.         63..40    Reserved
  2369.         39..32    Cache Memory Limit (CMLR)
  2370.         31..16    1st MB Read Only (LMROR)
  2371.         15..0    1st MB Cachable (LMCR)
  2372.  
  2373.       MSR 1002H is processor operation register (IBM only)
  2374.         (IBM 486SLC2 only)
  2375.         bits    description
  2376.         63..30    Reserved
  2377.         29    EEDFS (Enable External Dynamic Frequency Shift)
  2378.         28    DFSRY (Dynamic Frequency Shift Ready)
  2379.         27    DFSMD (Dynamic Frequency Shift Mode)
  2380.         26..24    CLKMD (Clock Mode)
  2381.             =000    x2
  2382.             =011    x1
  2383.         23..0    Reserved
  2384.  
  2385.  
  2386. Note: MSRs usefull documented in "Supplement to Pentium Processors User's
  2387. Manual" (Intel Corp. 1993,1994).
  2388.       IBM MSRs documented in "486SLC2 (tm) Microprocessor Data Sheet"
  2389. (IBM Corp. 1993,Order number: VT05452)
  2390.  
  2391.  
  2392. ---------------------------------------------------
  2393. RDPMC  - Read Perfomance Monitoring Counters
  2394.  
  2395.  
  2396. CPU:  Pentium (tm) Pro    (P6)
  2397. Type of Instruction: User
  2398.  
  2399. Instruction: RDPMC
  2400. Description:
  2401.     IF ((CPL<>0) AND (CR4.PCE==0))
  2402.     THEN { INT D (0) ; GENERAL PROTECTION FAULT }
  2403.     ELSE { EDX:EAX <- PERFOMANCE_MONITORING_REGISTER[ECX] }
  2404.     Note: Valid ECX values is 0,1.
  2405.           Invalid ECX values call INT D(0)
  2406.  
  2407.  
  2408. Note:  CR4.PSE = bit 8 of CR4
  2409.  
  2410. Note: Perfomance Monitoring Registers (PMR) are aliases to some Perfomance
  2411.       Monitoring MSRs:
  2412.  
  2413.       MSR 12h is Counter #0 (Read/Write) (Perfomance Monitoring Counter # 0)
  2414.         bits    Description
  2415.         63..41    Reserved
  2416.         40..0    Current counter value
  2417.  
  2418.       MSR 13h is Counter #1 (Read/Write) (Perfomance Monitoring Counter # 1)
  2419.         bits    Description
  2420.         63..41    Reserved
  2421.         40..0    Current counter value
  2422.  
  2423.  
  2424. ++++++++++++++++++++++++++++++++++++++
  2425. COP & Times:
  2426.  
  2427.    RDPMC    0FH 33H
  2428.     P6:     n/a
  2429.  
  2430.  
  2431. ---------------------------------------------------
  2432. RDTSC  - Read From Time Stamp Counter
  2433.  
  2434.  
  2435. CPU:  Pentium (tm)
  2436. Type of Instruction: System/User
  2437.  
  2438. Instruction: RDTSC
  2439. Description:
  2440.     IF (CR4.TSD=0) or ((CR4.TSD=1) and (CPL=0))  THEN
  2441.           {
  2442.           EDX:EAX <- TSC;
  2443.           }
  2444.         ELSE
  2445.           {
  2446.           General Protection Fault  INT 0DH (0)
  2447.           }
  2448.     END
  2449.  
  2450.  
  2451. Note: TSC is one of MSR and after global hardware reset (not SRESET , but
  2452. RESET ) it clear to 0000000000000000H.
  2453.       TSC is MSR index 10h. TSC may set using WRMSR instruction.
  2454.       TSC incremented every CPU core clock cycle.
  2455.  
  2456.  
  2457. Flags Affected: None
  2458.  
  2459. CPU mode: RM,PM0,SMM
  2460.       ; PM,VM if enable
  2461.  
  2462. Physical Form:         RDTSC
  2463. COP (Code of Operation): 0FH 31H
  2464. Clocks:         Pentium   : n/a [20-24]
  2465.  
  2466.  
  2467. ---------------------------------------------------
  2468. REPC  - Repeat While Carry Flag
  2469.  
  2470.  
  2471. CPU:  NEC/Sony all V-series
  2472. Type of Instruction: Prefix
  2473.  
  2474. Instruction: REPC
  2475. Description:
  2476.     DO
  2477.          CX=CX-1;
  2478.          SERVICE_PENDING_INTERRUPT;
  2479.          STRING_INSTRUCTION;
  2480.        LOOPWHILE ((CX<>0) AND (CF==1));
  2481.  
  2482.  
  2483. Flags Affected: None
  2484.  
  2485. CPU Mode: RM 8086
  2486.  
  2487. Physical Form:         REPC
  2488. COP (Code of Operation): 65H
  2489. Clocks:          NEC V20  : 2
  2490.           NEC V30  : 2
  2491.  
  2492.  
  2493. ---------------------------------------------------
  2494. REPNC  - Repeat While Not Carry Flag
  2495.  
  2496.  
  2497. CPU:  NEC/Sony all V-series
  2498. Type of Instruction: Prefix
  2499.  
  2500. Instruction: REPNC
  2501. Description:
  2502.     DO
  2503.          CX=CX-1;
  2504.          SERVICE_PENDING_INTERRUPT;
  2505.          STRING_INSTRUCTION;
  2506.        LOOPWHILE ((CX<>0) AND (CF<>1));
  2507.  
  2508.  
  2509. Flags Affected: None
  2510.  
  2511. CPU mode: RM 8086
  2512.  
  2513. Physical Form:         REPNC
  2514. COP (Code of Operation): 64H
  2515. Clocks:          NEC V20  : 2
  2516.           NEC V30  : 2
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522. ---------------------------------------------------
  2523. RES3  - Restore All  CPU Registers
  2524.  
  2525.  
  2526. CPU:  AMD Am386SXLV, Am386DXLV
  2527.  
  2528. Type of Instruction: System Operation
  2529.             (Work only then CPL=0)
  2530.  
  2531. Instruction: RES3
  2532. Description:
  2533.           Load All Registers (Include Shadow Registers) from Table
  2534.           Which Begin on  place pointed ES:EDI
  2535.  
  2536. Note:
  2537.           This instruction is AMD analog Intel's LOADALL instruction
  2538.           but it's more i.c. return from SMM used this instruction.
  2539.  
  2540.           Then in SMM table is in SMRAM, then non SMM then table is
  2541.           in main memory.
  2542.  
  2543. Format of RES3 Table:
  2544.  
  2545.            Offset  Len  Description
  2546.         0H    4    CR0
  2547.         4H    4    EFLAGS
  2548.         8H    4    EIP
  2549.         CH    4    EDI
  2550.         10H    4    ESI
  2551.         14H    4    EBP
  2552.         18H    4    ESP
  2553.         1CH    4    EBX
  2554.         20H    4    EDX
  2555.         24H    4    ESX
  2556.         28H    4    EAX
  2557.         2CH    4    DR6
  2558.         30H    4    DR7
  2559.         34H    4    TR     (16 bit, zero filled up)
  2560.         38H    4    LDT  ---------
  2561.         3CH    4    GS   ---------
  2562.         40H    4    FS   ---------
  2563.         44H    4    DS   ---------
  2564.         48H    4    SS   ---------
  2565.         4CH    4    CS   ---------
  2566.         50H    4    ES   ---------
  2567.         54H    4    TSS.attrib
  2568.         58H    4    TSS.base
  2569.         5CH    4    TSS.limit
  2570.         60H    4    Reserved
  2571.         64H    4    IDT.base
  2572.         68H    4    IDT.limit
  2573.         6CH    4    REP OUTS overrun flag
  2574.         70H    4    GDT.base
  2575.         74H    4    GDT.limit
  2576.         78H    4    LDT.attrib
  2577.         7CH    4    LDT.base
  2578.         80H    4    LDT.limit
  2579.         84H    4    GS.attrib
  2580.         88H    4    GS.base
  2581.         8CH    4    GS.limit
  2582.         90H    4    FS.attrib
  2583.         94H    4    FS.base
  2584.         98H    4    FS.limit
  2585.         9CH    4    DS.attrib
  2586.         A0H    4    DS.base
  2587.         A4H    4    DS.limit
  2588.         A8H    4    SS.attrib
  2589.         ACH    4    SS.base
  2590.         B0H    4    SS.limit
  2591.         B4H    4    CS.attrib
  2592.         B8H    4    CS.base
  2593.         BCH    4    CS.limit
  2594.         C0H    4    ES.attrib
  2595.         C4H    4    ES.base
  2596.         C8H    4    ES.limit
  2597.                 Unknown Unusable area
  2598.         100H    4    Temporary register
  2599.         104H    4    -------------
  2600.         108H    4    -------------
  2601.         10CH    4    -------------
  2602.         110H    4    -------------
  2603.         114H    4    -------------
  2604.         118H    4    -------------
  2605.         11CH    4    -------------
  2606.         120H    4    -------------
  2607.         124H    4    Last EIP (Last instruction EIP for Restart)
  2608.  
  2609. Format    of Attrib field:
  2610.  
  2611.            Byte    Description
  2612.            0    0s
  2613.            1    AR (Access Right) byte in the Descriptor format
  2614.             Note:
  2615.                P bit is a valid bit
  2616.                if valid bit=0 then Shadow Register is invalid and
  2617.                   INT 0DH - General Protection Fault call
  2618.                DPL of SS,CS det. CPL
  2619.            2-3    0s
  2620.  
  2621.  
  2622. Flags Affected: All (FLAGS Register Reload)
  2623.  
  2624. CPU mode: RM,PM0,SMM
  2625.  
  2626. Physical Form:         RES3
  2627. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  2628. Clocks:       Am386SXLV   : 366
  2629.        Am386DXLV   : 291
  2630.  
  2631. ---------------------------------------------------
  2632. RES4  - Restore All  CPU Registers
  2633.  
  2634.  
  2635. CPU:  AMD Am486SXLV, Am486DXLV
  2636.  
  2637. Type of Instruction: System Operation
  2638.             (Work only then CPL=0)
  2639.  
  2640. Instruction: RES3
  2641. Description:
  2642.           Load All Registers (Include Shadow Registers) from Table
  2643.           Which Begin on  place pointed ES:EDI
  2644.  
  2645. Note:
  2646.           This instruction is AMD analog Intel's LOADALL instruction
  2647.           but it's more i.c. return from SMM used this instruction.
  2648.  
  2649.           Then in SMM table is in SMRAM, then non SMM then table is
  2650.           in main memory.
  2651.  
  2652. Format of RES3 Table:
  2653.  
  2654.            Offset  Len  Description
  2655.         0H    4    CR0
  2656.         4H    4    EFLAGS
  2657.         8H    4    EIP
  2658.         CH    4    EDI
  2659.         10H    4    ESI
  2660.         14H    4    EBP
  2661.         18H    4    ESP
  2662.         1CH    4    EBX
  2663.         20H    4    EDX
  2664.         24H    4    ESX
  2665.         28H    4    EAX
  2666.         2CH    4    DR6
  2667.         30H    4    DR7
  2668.         34H    4    TR     (16 bit, zero filled up)
  2669.         38H    4    LDT  ---------
  2670.         3CH    4    GS   ---------
  2671.         40H    4    FS   ---------
  2672.         44H    4    DS   ---------
  2673.         48H    4    SS   ---------
  2674.         4CH    4    CS   ---------
  2675.         50H    4    ES   ---------
  2676.         54H    4    TSS.attrib
  2677.         58H    4    TSS.base
  2678.         5CH    4    TSS.limit
  2679.         60H    4    Reserved
  2680.         64H    4    IDT.base
  2681.         68H    4    IDT.limit
  2682.         6CH    4    REP OUTS overrun flag
  2683.         70H    4    GDT.base
  2684.         74H    4    GDT.limit
  2685.         78H    4    LDT.attrib
  2686.         7CH    4    LDT.base
  2687.         80H    4    LDT.limit
  2688.         84H    4    GS.attrib
  2689.         88H    4    GS.base
  2690.         8CH    4    GS.limit
  2691.         90H    4    FS.attrib
  2692.         94H    4    FS.base
  2693.         98H    4    FS.limit
  2694.         9CH    4    DS.attrib
  2695.         A0H    4    DS.base
  2696.         A4H    4    DS.limit
  2697.         A8H    4    SS.attrib
  2698.         ACH    4    SS.base
  2699.         B0H    4    SS.limit
  2700.         B4H    4    CS.attrib
  2701.         B8H    4    CS.base
  2702.         BCH    4    CS.limit
  2703.         C0H    4    ES.attrib
  2704.         C4H    4    ES.base
  2705.         C8H    4    ES.limit
  2706.                 Unknown Unusable area
  2707.         100H    4    Temporary register
  2708.         104H    4    -------------
  2709.         108H    4    -------------
  2710.         10CH    4    -------------
  2711.         110H    4    -------------
  2712.         114H    4    -------------
  2713.         118H    4    -------------
  2714.         11CH    4    -------------
  2715.         120H    4    -------------
  2716.         124H    4    Last EIP (Last instruction EIP for Restart)
  2717.         128H    4    PEIP - Previous SRAM space instruction pointer
  2718.         12EH    36    Unused
  2719.         150H    22    Floating Pointer Internal Registers (Am486DXLV)
  2720.  
  2721.  
  2722. Format    of Attrib field:
  2723.  
  2724.            Byte    Description
  2725.            0    0s
  2726.            1    AR (Access Right) byte in the Descriptor format
  2727.             Note:
  2728.                P bit is a valid bit
  2729.                if valid bit=0 then Shadow Register is invalid and
  2730.                   INT 0DH - General Protection Fault call
  2731.                DPL of SS,CS det. CPL
  2732.            2-3    0s
  2733.  
  2734.  
  2735. Flags Affected: All (FLAGS Register Reload)
  2736.  
  2737. CPU mode: RM,PM0,SMM
  2738.  
  2739. Physical Form:         RES4
  2740. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  2741. Clocks:       Am486SXLV   : N/A
  2742.  
  2743. ---------------------------------------------------
  2744. RETRBI      -  Return from Register Bank Context
  2745.          Switch  Interrupt.
  2746.  
  2747. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  2748. Type of Instruction: System
  2749.  
  2750. Instruction:  RETRBI
  2751.  
  2752. Description:
  2753.     PC  <- Save PC;
  2754.     PSW <- Save PSW;
  2755.  
  2756.  
  2757.  
  2758. Flags Affected:     All
  2759.  
  2760. CPU mode: RM
  2761.  
  2762. +++++++++++++++++++++++
  2763. Physical Form:    RETRBI
  2764. COP (Code of Operation)     : 0Fh 91h
  2765.  
  2766. Clocks:     12
  2767.  
  2768.  
  2769. ---------------------------------------------------
  2770. RETXA    -  Return from    Expansion Address
  2771.  
  2772. CPU:  NEC V33/V53 only
  2773. Type of Instruction: System
  2774.  
  2775. Instruction:  RETXA int_vector
  2776.  
  2777. Description:
  2778.          [sp-1,sp-2] <- PSW        ; PSW EQU FLAGS
  2779.          [sp-3,sp-4] <- PS        ; PS  EQU CS
  2780.          [sp-5,sp-6] <- PC        ; PC  EQU IP
  2781.          SP     <-  SP -6
  2782.          IE     <-  0
  2783.          BRK <-  0
  2784.          MD     <-  0
  2785.          PC     <- [int_vector*4 +0,+1]
  2786.          PS     <- [int_vector*4 +2,+3]
  2787.          Disable EA mode.
  2788.  
  2789. Flags Affected:     None
  2790.  
  2791. CPU mode: RM
  2792.  
  2793. +++++++++++++++++++++++
  2794. Physical Form:    RETXA  imm8
  2795. COP (Code of Operation)     : 0Fh F0h imm8
  2796.  
  2797. Clocks:     12
  2798. ---------------------------------------------------
  2799. ROL4  -     Rotate     left  4 bits
  2800.  
  2801.  
  2802. CPU: NEC/Sony all  V-series
  2803. Type of Instruction: User
  2804.  
  2805. Instruction:  ROL4  dest
  2806.  
  2807. Description:
  2808.         AL            dest
  2809.  
  2810. bits        7     4 3    0     7    4 3   0
  2811.         -------------     -------------
  2812.         |      |  o    <--------|    <-|-o  |<--\
  2813.         ---------|----     -------------     |
  2814.              |                 |
  2815.              \---------------------------/
  2816.  
  2817.  
  2818. Note:    This instruction Rotates (4bits) left out of dest through low 4bits
  2819.     of AL
  2820.  
  2821.  
  2822. Flags Affected: None
  2823.  
  2824. CPU mode: RM
  2825.  
  2826. +++++++++++++++++++++++
  2827. Physical Form         : ROL4     reg/mem8
  2828. COP (Code of Operation)     : 0FH 28H  PostByte
  2829.  
  2830. Clocks:        ROL4 reg/mem8
  2831. NEC V20:        25/28
  2832.  
  2833.  
  2834.  
  2835.  
  2836. ---------------------------------------------------
  2837. ROR4  -     Rotate     right    4 bits
  2838.  
  2839.  
  2840. CPU: NEC/Sony  all V-series
  2841. Type of Instruction: User
  2842.  
  2843. Instruction:  ROL4  dest
  2844.  
  2845. Description:
  2846.         AL            dest
  2847.  
  2848. bits        7     4 3    0     7    4 3   0
  2849.         -------------     -------------
  2850.         |      |   o--|------>|    o-|-> o-|--\
  2851.         ---------^----     -------------     |
  2852.              |                 |
  2853.              \---------------------------/
  2854.  
  2855.  
  2856. Note:    This instruction Rotates (4bits) right out of dest through low 4bits
  2857.     of AL
  2858.  
  2859.  
  2860. Flags Affected: None
  2861.  
  2862. CPU mode: RM
  2863.  
  2864. +++++++++++++++++++++++
  2865. Physical Form         : ROR4     reg/mem8
  2866. COP (Code of Operation)     : 0FH 2AH  PostByte
  2867.  
  2868. Clocks:        ROR4 reg/mem8
  2869. NEC V20:        29/33
  2870.  
  2871.  
  2872.  
  2873.  
  2874. ---------------------------------------------------
  2875. RSDC  - Restore Register and Descriptor
  2876.  
  2877.  
  2878. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  2879.       IBM   BL486DX/DX2
  2880.       TI    486SLC/DLC/e
  2881.       TI    486SXL/SXL2/SXLC
  2882.       TI    Potomac
  2883. Type of Instruction: System
  2884.  
  2885. Instruction:  RSDC sreg,sorc
  2886.  
  2887. Description:
  2888.     sreg [selector,shadow_descriptor] <- sorc
  2889.  
  2890.     ; sorc is register and descriptor structure (see below)
  2891.  
  2892.     ; Note: This instruction load segment register
  2893.     ;    include shadow descriptor
  2894.  
  2895.  
  2896. Format or Register and Descriptor Structure:
  2897.     +00    Limit (15-0)
  2898.     +02    Base  (15-0)
  2899.     +04    Base  (23-16)
  2900.     +05    AR byte
  2901.     +06    AR2/Limit (19-16)
  2902.     +07    Base  (31-24)
  2903.     +08    Selector
  2904.     Length of structure is 10h
  2905.  
  2906.  
  2907. Flags Affected: None
  2908.  
  2909. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2910.  
  2911.  
  2912.        1) CPL=0
  2913.        2) CCR1.bit1=1  ; SMI enable
  2914.        3) SMAR size > 0
  2915.        4A) in SMM
  2916.        4B) CCR1.bit2=1 ; SMAC is on
  2917.  
  2918.  
  2919. ++++++++++++++++
  2920.  
  2921. Physical Form: RSDC sgeg,mem80
  2922. COP (Code of Operation)     : 0FH 79H  [mm sreg3 mmm]
  2923. Clocks    IBM BL486DX: 10
  2924.     TI  486SXL : 14
  2925.  
  2926. Note: sreg3 is: 000 ES
  2927.         001 CS
  2928.         010 SS
  2929.         011 DS
  2930.         100 FS
  2931.         101 GS
  2932.  
  2933.  
  2934. ---------------------------------------------------
  2935. RSLDT  - Restore LDTR and Descriptor
  2936.  
  2937.  
  2938. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  2939.       IBM   BL486DX/DX2
  2940.       TI    486SLC/DLC/e
  2941.       TI    486SXL/SXL2/SXLC
  2942.       TI    Potomac
  2943. Type of Instruction: System
  2944.  
  2945. Instruction:  RSLDT sorc
  2946.  
  2947. Description:
  2948.     LDTR [selector,shadow_descriptor] <- sorc
  2949.  
  2950.     ; sorc is register and descriptor structure (see below)
  2951.  
  2952.  
  2953. Format or Register and Descriptor Structure:
  2954.     +00    Limit (15-0)
  2955.     +02    Base  (15-0)
  2956.     +04    Base  (23-16)
  2957.     +05    AR byte
  2958.     +06    AR2/Limit (19-16)
  2959.     +07    Base  (31-24)
  2960.     +08    Selector
  2961.     Length of structure is 10h
  2962.  
  2963.  
  2964. Flags Affected: None
  2965.  
  2966. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2967.  
  2968.  
  2969.        1) CPL=0
  2970.        2) CCR1.bit1=1  ; SMI enable
  2971.        3) SMAR size > 0
  2972.        4A) in SMM
  2973.        4B) CCR1.bit2=1 ; SMAC is on
  2974.  
  2975.  
  2976. ++++++++++++++++
  2977.  
  2978. Physical Form: RSLDT  mem80
  2979. COP (Code of Operation)     : 0FH 7BH  [mm 000 mmm]
  2980. Clocks    IBM BL486DX: 10
  2981.     TI  486SXL : 14
  2982.  
  2983.  
  2984.  
  2985. ---------------------------------------------------
  2986. RSM  - Resume from System Managment Mode
  2987.  
  2988.  
  2989. CPU:  I486 SL Enhanced+,i486SL,i386CX,i386EX
  2990. Type of Instruction: System
  2991.  
  2992. Instruction: RSM
  2993. Description:
  2994.        Restore execution state from SMRAM and
  2995.        return to previous CPU mode
  2996.  
  2997.  
  2998. CPU mode: SMM only
  2999.      ( INT 6 - Undefined Opcode in all other mode )
  3000.  
  3001. Flags Affected: All
  3002.  
  3003. Note: CPU state restored from dump created entrance to SMM.
  3004.       The CPU leave SMM and return to previous mode.
  3005.       If CPU detect any invalid state it enters shutdown.
  3006.       This invalid states is:
  3007.        * The value stored in State Dump Base field is not 32K aligned
  3008.      address
  3009.        * Any Reserved bit of CR4 is set to 1 (Pentium only)
  3010.        * Any  illegal Combination of CR0:
  3011.        ** (PG=1 and PE=0)
  3012.        ** (NW=1 and CD=0)
  3013.  
  3014.  
  3015. Format of Execution State in SMRAM:
  3016.     Offset    Register
  3017.     7FFCh    CR0
  3018.     7FF8h    CR3
  3019.     7FF4h    EFLAGS
  3020.     7FF0h    EIP
  3021.     7FECh    EDI
  3022.     7FE8h    ESI
  3023.     7FE4h    EBP
  3024.     7FE0h    ESP
  3025.     7FDCh    EBX
  3026.     7FD8h    EDX
  3027.     7FD4h    ECX
  3028.     7FD0h    EAX
  3029.     7FCCh    DR7
  3030.     7FC4h    TR, upper 2 bytes reserved
  3031.     7FC0h    LDTR, upper 2 bytes reserved
  3032.     7FBCh    GS, upper 2 bytes reserved
  3033.     7FB8h    FS, upper 2 bytes reserved
  3034.     7FB4h    DS, upper 2 bytes reserved
  3035.     7FB0h    SS, upper 2 bytes reserved
  3036.     7FACh    CS, upper 2 bytes reserved
  3037.     7FA8h    ES, upper 2 bytes reserved
  3038.     7F98h    Reserved
  3039.     7F94h    IDT base  (4 bytes)
  3040.     7F8Ch    Reserved
  3041.     7F88h    GDT base  (4 bytes)
  3042.     7F04h    Reserved
  3043.     7F02h    Auto HALT Restart Slot (2 bytes)
  3044.         Bits 15..2 are reserved
  3045.         Bit 1  Bit 0    Description
  3046.         0    0    Resume to next instruction in interrupted
  3047.                 program
  3048.         0    1    Unpredictable
  3049.         1    0    Return to next instruction after HALT
  3050.         1    1    Return to HALT state
  3051.     7F00h    I/O Restart Slot (2 bytes)
  3052.         When RSM execution if I/O restart slot = 0FFh then
  3053.         EIP modified to instruction immediate preceding the
  3054.         SMI# request i.e. CPU automatically reexecute I/O
  3055.         instruction which be trapped by SMI.
  3056.     7EFCh    SMM Revision Identificator (4 bytes)
  3057.         Bits    Description
  3058.         31..18    Reserved
  3059.         17    If=1 Processor support SMBASE relocation
  3060.             else not support
  3061.         16    If =1 Processor support I/O Instruction Restart
  3062.         15..0    SMM Revision Identificator
  3063.             P5,486s = 0000h
  3064.             P54C when I/O Restarts enable = 0002h
  3065.     7EF8h    SMBASE Slot (4 bytes)
  3066.         SMBASE is 32KB aligned 32bit dword which contained a base
  3067.         address for SMRAM.
  3068.         Default value is 30000h
  3069.         Starting Address for for jump in SMM is:
  3070.           SMBASE+8000h
  3071.         Starting address for State Save area is
  3072.           SMBASE+[8000h+7FFFh]
  3073.     7E00h    Reserved
  3074.  
  3075.  
  3076. Note: In fields marked Reserved saved and restores next registers:
  3077.       CR1,CR2,CR3, hidden descriptors for CS,DS,ES,FS,SS,GS.
  3078.       Never saved registers: DR5-DR0,TR7-TR3,all FPU registers.
  3079.       More Information Not available Yet.
  3080.  
  3081.  
  3082. Physical Form:          RSM
  3083. COP (Code of Operation)      : 0FH AAH
  3084. Clocks:      i386CX      : 338
  3085.     i486 SL Enhanced  : ???
  3086.      IntelDX4      : 452        ; SMBASE relocation
  3087.               : 456        ; AutoHALT restart
  3088.               : 465        ; I/O Trap restart
  3089.          Pentium  : 83
  3090.  
  3091. ---------------------------------------------------
  3092. RSM  - Resume from SMM
  3093.  
  3094.  
  3095. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3096.       IBM   BL486DX/DX2
  3097.       TI    486SLC/DLC/e
  3098.       TI    486SXL/SXL2/SXLC
  3099.       TI    Potomac
  3100. Type of Instruction: System
  3101.  
  3102. Instruction:  RSM
  3103.  
  3104. Description:
  3105.     RESTORE CPU STATE FROM SMM HEADER AT THE TOP OF
  3106.     SMM SPACE (defined by SMAR register);
  3107.     EXIT SMM;
  3108.  
  3109. Format of SMM Header:
  3110.     Offset    Length    Description
  3111.     -00h    -    Nothing (Top of SMM space) (Not accessable)
  3112.     -04h    32    DR7
  3113.     -08h    32    EFLAGS
  3114.     -0Ch    32    CR0
  3115.     -10h    32    Current EIP
  3116.     -14h    32    Next instruction EIP
  3117.     -16h    16    Reserved
  3118.     -18h    16    CS selector
  3119.     -1Ch    32    CS descriptor(63-32)
  3120.     -20h    32    CS descriptor(31-0)
  3121.     -24h    32    SMM Flags
  3122.             [ ALL BITS are Not available in Cx486S/S2/D/D2]
  3123.             Bit   Description
  3124.             1    I (IN/INSx/OUT/OUTx Indicator)
  3125.                  If =0 current instruction performed
  3126.                    I/O read
  3127.                 =1 I/O write
  3128.             2    P (REP INSx/OUTx Prefix)
  3129.                  If =1 current instruction has REP pfix.
  3130.                 =0 not has REP pfix
  3131.             3    S (Software SMI)
  3132.                  If =1 current SMM is result of execution
  3133.                    SMINT instruction
  3134.                 =0 current SMM is result of hardware SMI
  3135.             Note: TI 486SXL/SXL2 support only bits 1,2.
  3136.     -26h    16    I/O Write Data size
  3137.             [ Not available in Cx486S/S2/D/D2]
  3138.             [ Not available in TI486SXL/SXL2]
  3139.             [ Not available in TI486SLC/DLC/e]
  3140.             1h = byte
  3141.             3h = word
  3142.             fh = dword
  3143.     -28h    16    I/O Write Address
  3144.             [ Not avaliable in Cx486S/S2/D/D2]
  3145.             [ Not available in TI486SXL/SXL2]
  3146.             [ Not available in TI486SLC/DLC/e]
  3147.     -2Ch    32    I/O Write Data
  3148.             [ Not avaliable in Cx486S/S2/D/D2]
  3149.             [ Not available in TI486SXL/SXL2]
  3150.             [ Not available in TI486SLC/DLC/e]
  3151.     -30h    32    ESI or EDI
  3152.             This field saved value of source/destination
  3153.             for restart INSx/OUTSx instruction
  3154.             [ Not avaliable in Cx486S/S2/D/D2]
  3155.  
  3156.  
  3157. Flags Affected: All
  3158.  
  3159. CPU mode: SMM
  3160.  
  3161. ++++++++++++++++
  3162.  
  3163. Physical Form: RSM
  3164. COP (Code of Operation)     : 0FH AAH
  3165. Clocks    IBM BL486DX: 76
  3166.     TI  486SXL : 58
  3167.  
  3168.  
  3169.  
  3170. ---------------------------------------------------
  3171. RSTS  - Restore TR and Descriptor
  3172.  
  3173.  
  3174. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3175.       TI    486SLC/DLC/e
  3176.       TI    486SXL/SXL2/SXLC
  3177.       IBM   BL486DX/DX2
  3178. Type of Instruction: System
  3179.  
  3180. Instruction:  RSTS sorc
  3181.  
  3182. Description:
  3183.     TR [selector,shadow_descriptor] <- sorc
  3184.  
  3185.     ; sorc is register and descriptor structure (see below)
  3186.  
  3187.  
  3188. Format or Register and Descriptor Structure:
  3189.     +00    Limit (15-0)
  3190.     +02    Base  (15-0)
  3191.     +04    Base  (23-16)
  3192.     +05    AR byte
  3193.     +06    AR2/Limit (19-16)
  3194.     +07    Base  (31-24)
  3195.     +08    Selector
  3196.     Length of structure is 10h
  3197.  
  3198.  
  3199. Flags Affected: None
  3200.  
  3201. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  3202.  
  3203.  
  3204.        1) CPL=0
  3205.        2) CCR1.bit1=1  ; SMI enable
  3206.        3) SMAR size > 0
  3207.        4A) in SMM
  3208.        4B) CCR1.bit2=1 ; SMAC is on
  3209.  
  3210.  
  3211. ++++++++++++++++
  3212.  
  3213. Physical Form: RSTS  mem80
  3214. COP (Code of Operation)     : 0FH 7DH  [mm 000 mmm]
  3215. Clocks    IBM BL486DX: 10
  3216.     TI  486SXL : 14
  3217.  
  3218.  
  3219.  
  3220. ---------------------------------------------------
  3221. SET1  -     Set a Specified Bit
  3222.  
  3223.  
  3224. CPU: NEC/Sony V-series
  3225. Type of Instruction: User
  3226.  
  3227. Instruction:  SET1 dest,bitnumb
  3228.  
  3229. Description:
  3230.         BIT  bitnumb OF dest <- 1;
  3231.  
  3232.  
  3233. Flags Affected: None
  3234.  
  3235.  
  3236. CPU mode: RM
  3237.  
  3238. +++++++++++++++++++++++
  3239. Physical Form:           SET1 reg/mem8,CL
  3240. COP (Code of Operation)     : 0FH 14H  Postbyte
  3241.  
  3242. Physical Form:           SET1 reg/mem8,imm8
  3243. COP (Code of Operation)     : 0FH 1CH  Postbyte imm8
  3244.  
  3245. Physical Form:           SET1 reg/mem16,CL
  3246. COP (Code of Operation)     : 0FH 15H  Postbyte
  3247.  
  3248. Physical Form:           SET1 reg/mem16,imm8
  3249. COP (Code of Operation)     : 0FH 1DH  Postbyte  imm8
  3250.  
  3251.  
  3252. Clocks:                 SET1
  3253.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  3254. NEC V20:      4/13     5/14          4/13          5/14
  3255.  
  3256.  
  3257.  
  3258. ---------------------------------------------------
  3259. SETALC    - Set AL to Carry Flag
  3260.  
  3261.  
  3262. CPU:  Intel 80286 and all its clones and upward
  3263.     compatibility chips.
  3264. Type of Instruction: User
  3265.  
  3266. Instruction: SETALC
  3267. Description:
  3268.     IF (CF=0) THEN AL:=0 ELSE AL:=FFH;
  3269.  
  3270.  
  3271. Flags Affected: None
  3272.  
  3273. CPU mode: RM,PM,VM,SMM
  3274.  
  3275. Physical Form:         SETALC
  3276. COP (Code of Operation): D6H
  3277. Clocks:          80286    : n/a   [3]
  3278.           80386    : n/a   [3]
  3279.          Cx486SLC  : n/a   [2]
  3280.           i486     : n/a   [3]
  3281.           Pentium  : n/a   [3]
  3282. Note: n/a is Time that Intel etc not say.
  3283.       [3] is real time it executed.
  3284.  
  3285.  
  3286. ---------------------------------------------------
  3287. SMI  - System Managment Interrupt
  3288.  
  3289. CPU:  AMD Am386SXLV,Am386DXLV
  3290.       AMD 486s
  3291. Type of Instruction: System
  3292.  
  3293. Instruction: SMI
  3294. Description:
  3295.     IF (SMIE=1) THEN
  3296.            {
  3297.            SAVE STATUS OF EXECUTION TO SMRAM;
  3298.            ENTER SMM;
  3299.            SMMS <- 1;
  3300.            }
  3301.        ELSE
  3302.           {
  3303.           INT 1;
  3304.           }
  3305.        END
  3306.  
  3307. Notes: SMIE is <Soft SMI Enable> (DR7.bit12)
  3308.            =1 Enable soft SMI
  3309.            =0 Disable soft SMI
  3310.        SMMS is <SMM status bit>     (DR6.bit12)
  3311.            =1 SMM was entered
  3312.            =0 SMM status cleared
  3313.  
  3314. Flags Affected: None
  3315.  
  3316. CPU mode: RM?,PM0
  3317.  
  3318. Physical Form:         SMI
  3319. COP (Code of Operation): F1H
  3320. Clocks:         Am386SXLV : 357
  3321.          Am386DXLV : 325
  3322.          Am486xxxx : Don't know, do you?
  3323.  
  3324. ---------------------------------------------------
  3325. SMINT - Software SMM Interrupt
  3326.  
  3327.  
  3328. CPU:  Cyrix Cx486DX/DX2/DX4
  3329.       IBM   BL486DX/DX2
  3330. Note: Never in Cx486S/S2/D/D2
  3331.       Never in any TI's chips.
  3332. Type of Instruction: System
  3333.  
  3334. Instruction:  SMINT
  3335.  
  3336. Description:
  3337.     SAVE CPU STATE TO SMM HEADER AT THE TOP OF
  3338.     SMM SPACE (defined by SMAR register);
  3339.     ENTER SMM MODE;
  3340.  
  3341.  
  3342. Format of SMM Header: Refer to Cyrix/IBM SMI Instruction
  3343.  
  3344.  
  3345. Flags Affected: None
  3346.  
  3347. CPU mode: CPL=0, CCR1.bit1=1, SMAR size >= 30h.
  3348.  
  3349.  
  3350. ++++++++++++++++
  3351.  
  3352. Physical Form: SMINT
  3353. COP (Code of Operation)     : 0FH 7EH
  3354. Clocks    IBM BL486DX: 24
  3355.  
  3356.  
  3357.  
  3358.  
  3359. ---------------------------------------------------
  3360. STOP    -  Stop CPU
  3361.  
  3362. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  3363. Type of Instruction: System
  3364.  
  3365. Instruction:  STOP
  3366.  
  3367. Description:
  3368.         PowerDown instruction, Stop Oscillator,
  3369.         Halt CPU.
  3370.  
  3371.  
  3372. Flags Affected:     None
  3373.  
  3374. CPU mode: RM
  3375.  
  3376. +++++++++++++++++++++++
  3377. Physical Form:    STOP
  3378. COP (Code of Operation)     : 0Fh BEh
  3379.  
  3380. Clocks:     N/A
  3381.  
  3382. ---------------------------------------------------
  3383. SUB4S  -  Subtraction of packed BCD strings
  3384.  
  3385.  
  3386. CPU: NEC/Sony all V-series
  3387. Type of Instruction: User
  3388.  
  3389. Instruction:  SUB4S
  3390.  
  3391. Description:
  3392.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  3393.       BCD STRING (ADDRESS=DS:SI,LENGTH=CL) -
  3394.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  3395.  
  3396.       Length of BCD string in CL;
  3397.  
  3398. Note:    si,di,cl and other registers not changed
  3399.  
  3400. Flags Affected: OF,CF,ZF
  3401.     ;;  ZF set if result is zero.
  3402.     ;;  CF,OF set as result of operation with most
  3403.     ;;  signification BCDs.
  3404.  
  3405. CPU mode: RM
  3406.  
  3407. +++++++++++++++++++++++
  3408. Physical Form: SUB4S
  3409. COP (Code of Operation)     : 0FH 22H
  3410.  
  3411. Clocks:        SUB4S
  3412. NEC V20:    ~7+19*CL
  3413.  
  3414.  
  3415. ---------------------------------------------------
  3416. SVDC  - Save Register and Descriptor
  3417.  
  3418.  
  3419. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3420.       IBM   BL486DX/DX2
  3421.       TI    486SLC/DLC/e
  3422.       TI    486SXL/SXL2/SXLC
  3423.       TI    Potomac
  3424. Type of Instruction: System
  3425.  
  3426. Instruction:  SVDC dest,sreg
  3427.  
  3428. Description:
  3429.     dest <- sreg [selector,shadow_descriptor]
  3430.  
  3431.     ; dest is register and descriptor structure (see below)
  3432.  
  3433.  
  3434. Format or Register and Descriptor Structure:
  3435.     +00    Limit (15-0)
  3436.     +02    Base  (15-0)
  3437.     +04    Base  (23-16)
  3438.     +05    AR byte
  3439.     +06    AR2/Limit (19-16)
  3440.     +07    Base  (31-24)
  3441.     +08    Selector
  3442.     Length of structure is 10h
  3443.  
  3444.  
  3445. Flags Affected: None
  3446.  
  3447. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  3448.  
  3449.  
  3450.        1) CPL=0
  3451.        2) CCR1.bit1=1  ; SMI enable
  3452.        3) SMAR size > 0
  3453.        4A) in SMM
  3454.        4B) CCR1.bit2=1 ; SMAC is on
  3455.  
  3456.  
  3457. ++++++++++++++++
  3458.  
  3459. Physical Form: SVDC mem80,sreg
  3460. COP (Code of Operation)     : 0FH 78H  [mm sreg3 mmm]
  3461. Clocks    IBM BL486DX: 18
  3462.     TI  486SXL : 22
  3463.  
  3464. Note: sreg3 is: 000 ES
  3465.         001 CS
  3466.         010 SS
  3467.         011 DS
  3468.         100 FS
  3469.         101 GS
  3470.  
  3471.  
  3472. ---------------------------------------------------
  3473. SVLDT  - Save LDTR and Descriptor
  3474.  
  3475.  
  3476. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3477.       IBM   BL486DX/DX2
  3478.       TI    486SLC/DLC/e
  3479.       TI    486SXL/SXL2/SXLC
  3480.       TI    Potomac
  3481. Type of Instruction: System
  3482.  
  3483. Instruction:  SVLDT dest
  3484.  
  3485. Description:
  3486.     dest <- LDTR [selector,shadow_descriptor]
  3487.  
  3488.     ; dest is register and descriptor structure (see below)
  3489.  
  3490.  
  3491. Format or Register and Descriptor Structure:
  3492.     +00    Limit (15-0)
  3493.     +02    Base  (15-0)
  3494.     +04    Base  (23-16)
  3495.     +05    AR byte
  3496.     +06    AR2/Limit (19-16)
  3497.     +07    Base  (31-24)
  3498.     +08    Selector
  3499.     Length of structure is 10h
  3500.  
  3501.  
  3502. Flags Affected: None
  3503.  
  3504. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  3505.  
  3506.  
  3507.        1) CPL=0
  3508.        2) CCR1.bit1=1  ; SMI enable
  3509.        3) SMAR size > 0
  3510.        4A) in SMM
  3511.        4B) CCR1.bit2=1 ; SMAC is on
  3512.  
  3513.  
  3514. ++++++++++++++++
  3515.  
  3516. Physical Form: SVLDT mem80
  3517. COP (Code of Operation)     : 0FH 7AH  [mm 000 mmm]
  3518. Clocks    IBM BL486DX: 18
  3519.     TI  486SXL : 22
  3520.  
  3521.  
  3522. ---------------------------------------------------
  3523. SVTS  - Save TR and Descriptor
  3524.  
  3525.  
  3526. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3527.       IBM   BL486DX/DX2
  3528.       TI    486SLC/DLC/e
  3529.       TI    486SXL/SXL2/SXLC
  3530.       TI    Potomac
  3531. Type of Instruction: System
  3532.  
  3533. Instruction:  SVTS dest
  3534.  
  3535. Description:
  3536.     dest <- TR [selector,shadow_descriptor]
  3537.  
  3538.     ; dest is register and descriptor structure (see below)
  3539.  
  3540.  
  3541. Format or Register and Descriptor Structure:
  3542.     +00    Limit (15-0)
  3543.     +02    Base  (15-0)
  3544.     +04    Base  (23-16)
  3545.     +05    AR byte
  3546.     +06    AR2/Limit (19-16)
  3547.     +07    Base  (31-24)
  3548.     +08    Selector
  3549.     Length of structure is 10h
  3550.  
  3551.  
  3552. Flags Affected: None
  3553.  
  3554. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  3555.  
  3556.  
  3557.        1) CPL=0
  3558.        2) CCR1.bit1=1  ; SMI enable
  3559.        3) SMAR size > 0
  3560.        4A) in SMM
  3561.        4B) CCR1.bit2=1 ; SMAC is on
  3562.  
  3563.  
  3564. ++++++++++++++++
  3565.  
  3566. Physical Form: SVTS mem80
  3567. COP (Code of Operation)     : 0FH 7CH  [mm 000 mmm]
  3568. Clocks    IBM BL486DX: 18
  3569.     TI  486SXL : 22
  3570.  
  3571.  
  3572. ---------------------------------------------------
  3573. TEST1  -  Test a Specified bit
  3574.  
  3575.  
  3576. CPU: NEC/Sony all V-series
  3577. Type of Instruction: User
  3578.  
  3579. Instruction:  NOT1 dest,bitnumb
  3580.  
  3581. Description:
  3582.         IF dest IS  8BIT THEN  bitn <- bitnumb AND 7;
  3583.         IF dest IS 16BIT THEN  bitn <- bitnumb AND Fh;
  3584.  
  3585.         IF (BIT bitn OF dest) = 0 THEN
  3586.             {
  3587.             ZF <- 1;
  3588.             }
  3589.         ELSE    {
  3590.             ZF <- 0;
  3591.             }
  3592.         ENDIF
  3593.  
  3594.  
  3595. Flags Affected: ZF
  3596.  
  3597.  
  3598. CPU mode: RM
  3599.  
  3600. +++++++++++++++++++++++
  3601. Physical Form:           TEST1 reg/mem8,CL
  3602. COP (Code of Operation)     : 0FH 10H  Postbyte
  3603.  
  3604. Physical Form:           TEST1 reg/mem8,imm8
  3605. COP (Code of Operation)     : 0FH 18H  Postbyte imm8
  3606.  
  3607. Physical Form:           TEST1 reg/mem16,CL
  3608. COP (Code of Operation)     : 0FH 11H  Postbyte
  3609.  
  3610. Physical Form:           TEST1 reg/mem16,imm8
  3611. COP (Code of Operation)     : 0FH 19H  Postbyte  imm8
  3612.  
  3613.  
  3614. Clocks:                 TEST1
  3615.          r/m8,CL    r/m8,i8        r/m16,CL   r/m16,i8
  3616. NEC V20:      3/12     4/13         3/12        4/13
  3617.  
  3618.  
  3619. ---------------------------------------------------
  3620. TSKSW  -   Task Switch
  3621.  
  3622. CPU:  NEC V25,V35,V25 Plus,V35 Plus,V25 Software Guard
  3623. Type of Instruction: System
  3624.  
  3625. Instruction:  TSKSW   reg16
  3626.  
  3627. Description:  Perform a High-Speed task switch to the register bank indicated
  3628.           by lower 3 bits of reg16. The PC and PSW are saved in the old
  3629.           banks. PC and PSW save Registers and the new PC and PSW values
  3630.           are retrived from the new register bank's save area.
  3631.  
  3632. Note:         See BRKCS instruction for more Info about banks.
  3633.  
  3634.  
  3635. Flags Affected:     All
  3636.  
  3637. CPU mode: RM
  3638.  
  3639. +++++++++++++++++++++++
  3640. Physical Form:    TSCSW reg16
  3641. COP (Code of Operation)     : 0Fh 94h <1111 1RRR>
  3642.  
  3643. Clocks:     11
  3644.  
  3645.  
  3646. ---------------------------------------------------
  3647. UMOV  - Mov Data to Main (User) Memory
  3648.  
  3649.  
  3650. CPU:  AMD Am386SXLV,Am386DXLV
  3651.       AMD 486s
  3652.       IBM 486SLC2
  3653. Type of Instruction: Special System
  3654.  
  3655. Instruction: UMOV dest,sorc
  3656.  
  3657. Description:
  3658.       dest <- sorc;
  3659.  
  3660. Note!!!!!: But all memory operands placed in Main memory only !
  3661.       ( i.e. not in SMRAM then in SMM )
  3662.  
  3663. WARNING: UMC's CPUs hang on execution this instruction !!!!!!
  3664.      check that CPU is none UMC's before
  3665.  
  3666. Note:     On Cyrix's CPUs UMOV opcodes do nothing. This way used to
  3667.      determination of Cyrix Microprocessors.
  3668.  
  3669. Note:     Pentium P54C never support this instruction
  3670.  
  3671. Flags Affected:     None
  3672.  
  3673. CPU mode: RM?,PM?,VM?,SMM
  3674.  
  3675. +++++++++++++++++++++++
  3676. Physical Form:           UMOV     r/m8,r8
  3677. COP (Code of Operation)     : 0FH 10H Postbyte
  3678.  
  3679. Clocks:
  3680.       Am386SXLV or AM386DXLV:  2/2
  3681.       IBM 486SLC2        :  4
  3682. +++++++++++++++++++++
  3683. Physical Form:           UMOV     r/m16,r16
  3684.                UMOV     r/m32,r32
  3685. COP (Code of Operation)     : 0FH 11H Postbyte
  3686.  
  3687. Clocks:
  3688.       Am386SXLV or AM386DXLV:  2/2
  3689.       IBM 486SLC2        :  4
  3690. +++++++++++++++++++++++
  3691. Physical Form:           UMOV     r8,r/m8
  3692. COP (Code of Operation)     : 0FH 12H Postbyte
  3693.  
  3694. Clocks:
  3695.       Am386SXLV or AM386DXLV:  2/4
  3696.       IBM 486SLC2        :  4
  3697. +++++++++++++++++++++
  3698. Physical Form:           UMOV     r16,r/m16
  3699.                UMOV     r32,r/m32
  3700. COP (Code of Operation)     : 0FH 13H Postbyte
  3701.  
  3702. Clocks:
  3703.       Am386SXLV or AM386DXLV:  2/4
  3704.       IBM 486SLC2        :  4
  3705.  
  3706.  
  3707. ---------------------------------------------------
  3708. WBINVD    - Write Back and Invalidate Cache
  3709.  
  3710.  
  3711. CPU:  I486 +
  3712. Type of Instruction: System
  3713.  
  3714. Instruction: WBINVD
  3715. Description:
  3716.          IF (internal cache is WB and in WB mode) THEN
  3717.               {
  3718.               Write Back Internal Cache;
  3719.               }
  3720.          Flush internal cache;
  3721.          Signal external cache to Write Back;
  3722.          Signal external cache to Flush;
  3723.  
  3724.  
  3725. Notes: This instruction not work in Real Mode and  in
  3726. Protected mode work only in ring 0 ;
  3727.  
  3728. Flags Affected: None
  3729.  
  3730. CPU mode: PM0,SMM
  3731.  
  3732. Physical Form:         INVD
  3733. COP (Code of Operation): 0FH 09H
  3734. Clocks: Cyrix Cx486SLC : 4
  3735.           i486     : 5
  3736.           Pentium  : 2000+
  3737.  
  3738. ---------------------------------------------------
  3739. WRMSR  - Write to From Model Specified Register
  3740.  
  3741. CPU:  Pentium (tm), IBM 486SLC2
  3742. Type of Instruction: System
  3743.  
  3744. Instruction: WRMSR
  3745. Description:
  3746.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  3747.           {
  3748.           MSR [ECX] <- EDX:EAX;
  3749.           }
  3750.         ELSE
  3751.           {
  3752.           General Protection Fault  INT 0DH (0)
  3753.           }
  3754.     END
  3755.  
  3756.  
  3757. Flags Affected: None
  3758.  
  3759. Note: Refer to RDMSR for more Info.
  3760.  
  3761. CPU mode: RM,PM0,SMM
  3762.  
  3763. Physical Form:         WRMSR
  3764. COP (Code of Operation): 0FH 30H
  3765. Clocks:         Pentium   : 30-45
  3766.  
  3767. ---------------------------------------------------
  3768. XADD  - Exchange and addition
  3769.  
  3770.  
  3771. CPU:  i486+
  3772. Type of Instruction: User
  3773.  
  3774. Instruction: XADD dest,sorc
  3775.  
  3776. Description:
  3777.       Temporary <- dest;
  3778.       dest        <- dest + sorc;
  3779.       sorc        <- Temporary;
  3780.  
  3781.  
  3782. Flags Affected:     ZF,OF,SF,AF,PF,CF ( like ADD instruction ) ( see description)
  3783.  
  3784. CPU mode: RM,PM,VM,SMM
  3785.  
  3786. +++++++++++++++++++++++
  3787. Physical Form:           XADD     r/m8,r8
  3788. COP (Code of Operation)     : 0FH C0H Postbyte
  3789.  
  3790. Clocks:
  3791.        Intel i486     :  3/4
  3792.      Cyrix Cx486SLC     :  3/6
  3793.      Pentium (tm)     :  3/4
  3794.  
  3795. Penalty if cache miss     :
  3796.       Intel i486     : 6/2    ; Unlocked/Locked
  3797.      Cyrix Cx486SLC     : 0    ; N/A
  3798. +++++++++++++++++++++
  3799. Physical Form:           XADD     r/m16,r16
  3800.                XADD     r/m32,r32
  3801. COP (Code of Operation)     : 0FH C1H Postbyte
  3802.  
  3803. Clocks:
  3804.        Intel i486     :  3/4
  3805.      Cyrix Cx486SLC     :  3/6
  3806.      Pentium (tm)     :  3/4
  3807.  
  3808. Penalty if cache miss     :
  3809.       Intel i486     : 6/2    ; Unlocked/Locked
  3810.      Cyrix Cx486SLC     : 1    ; N/A
  3811.  
  3812.  
  3813. ---------------------------------------------------
  3814. XBTS    -  Extract  Bits String
  3815.  
  3816.  
  3817. CPU:  80386 step A0-B0 only
  3818. Type of Instruction: User
  3819.  
  3820. Instruction:  XBTS dest,base,bitoffset,len
  3821.  
  3822. Description:
  3823.          Write bit string length <len> bits from bitfield, defined by
  3824.         <base> and bitsoffset <bitoffset> from this base to start of
  3825.         the field to read. String read from this start field bit to
  3826.         higher memory addresses or register bits.
  3827.         And after it string placed to <dest> operand, lowest bit of
  3828.         register or memory to bit 0 of <dest>.
  3829.  
  3830. Note:         Use SHLD/SHRD instructions for extract bits strings.
  3831.          On 80386 steps B1+ this opcode generation INT 6,
  3832.          and on some of 486 other instruction replace this
  3833.          instruction opcode.
  3834.  
  3835.  
  3836. Flags Affected: None
  3837.  
  3838. CPU mode: RM,PM,VM
  3839.  
  3840. +++++++++++++++++++++++
  3841. Physical Form:      XBTS    r16,r/m16,AX,CL
  3842.           XBTS    r32,r/m32,EAX,CL
  3843. COP (Code of Operation)     : 0FH A6H Postbyte
  3844.  
  3845. Clocks:        XBTS
  3846. 80386:        6/13
  3847.  
  3848.  
  3849. -----------------------------------------------------
  3850. APPENDIX    A0
  3851. Cyrix Cx486SLC/DLC configuration Registers
  3852.  
  3853. for Cx486DLC:
  3854. Register    Full Register Name        Index    size(bits)
  3855. CCR0    Configuration Control Register #0    C0H    8
  3856. CCR1    Configuration Control Register #1    C1H    8
  3857. NCR1    Non-cacheble Region #0            C4H-C6H    24
  3858. NCR2    Non-cachable Region #1            C7H-C9H    24
  3859. NCR3    Non-cacheble Region #2            CAH-CCH 24
  3860. NCR4    Non-cacheble Region #4            CDH-CFH    24
  3861.  
  3862. for Cx486SLC:
  3863. Register    Full Register Name        Index    size(bits)
  3864. CCR0    Configuration Control Register #0    C0H    8
  3865. CCR1    Configuration Control Register #1    C1H    8
  3866. NCR1    Non-cacheble Region #0            C5H-C6H    16
  3867. NCR2    Non-cachable Region #1            C8H-C9H    16
  3868. NCR3    Non-cacheble Region #2            CBH-CCH 16
  3869. NCR4    Non-cacheble Region #4            CEH-CFH    16
  3870.  
  3871.  
  3872. For access to this register You need to do:
  3873.  
  3874. A) write INDEX_OF_REGISTER to I/O port #22H
  3875. B) wait 5-6 clocks
  3876. D) read/write DATA from/to register via I/O port #23
  3877.  
  3878. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  3879.       generated external bus cycle. If You try to read I/O port
  3880.       #22H CPU will generated external bus cycle too. Then index
  3881.       is out of range all operations with port #23H will generate
  3882.       external bus cycle.
  3883.  
  3884. State After Reset:
  3885.     CCR0    00H
  3886.     CCR1    xxxx xxx0B
  3887.     NCR1    000Fh
  3888.     NCR2    0
  3889.     NCR3    0
  3890.     NCR4    0
  3891.  
  3892. format of registers:
  3893.  
  3894. CCR0:
  3895. Bit    Name    Description
  3896. 7    SUSPEND
  3897.     If =1 then enable SUSP# and SUSPA# pins, which used for
  3898.     put CPU in PowerSave mode.
  3899.     If =0 disable
  3900.  
  3901. 6    CO    (Cache Organisation)
  3902.     If =0 2ways set associative
  3903.     If =1 Dirrect Mapped
  3904.  
  3905. 5    BARB
  3906.     If =1 then enable flushing internal cache when begining
  3907.     HOLD state.
  3908.     IF =0 disable.
  3909.  
  3910. 4    FLUSH
  3911.     If =1 enable input pin FLUSH#
  3912.     if =0 disable
  3913.  
  3914. 3    KEN
  3915.     If =1 enable input pin KEN#
  3916.     if =0 disable
  3917.  
  3918. 2    A20M
  3919.     If =1 enable input pin A20M#
  3920.     if =0 disable
  3921.  
  3922. 1    NC1
  3923.     If=1 then 640KB-1MB area never caching
  3924.     If=0 caching (but see NCRi)
  3925.  
  3926. 0    NC0
  3927.     If=1 then first 64K of each 1MB bounds not caching,
  3928.     when in Real or Virtual8086 mode
  3929.     If =0 caching
  3930.  
  3931.  
  3932. CCR1:
  3933. Bit    Name    Description
  3934. 7-1    Reserved
  3935. 0    RPL
  3936.     If =1 then enable RPLSET,RPLVAL# pins
  3937.     If =0 this pins are disable and float.
  3938.  
  3939. NCRi:
  3940. Byte    Bits    Description
  3941. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  3942.         (Reserved for Cx486SLC)
  3943. 1    7-0    Address bits A23-A16 of non-cachable region start
  3944. 2    7-4    Address bits A15-A12 of non-cacheble region start
  3945. 2    3-0    Size of non-cacheble block:
  3946.         0000  Disable NCRi
  3947.         0001  4K
  3948.         0010  8K
  3949.         0011  16K
  3950.         0100  32K
  3951.         0101  64K
  3952.         0110  128K
  3953.         0111  256K
  3954.         1000  512K
  3955.         1001  1M
  3956.         1010  2M
  3957.         1011  4M
  3958.         1100  8M
  3959.         1101  16M
  3960.         1110  32M
  3961.         1111  4G
  3962.  
  3963. NCRi bytes:
  3964.  
  3965.  
  3966.     Byte
  3967. NCRi    0    1    2
  3968. NCR1    C4H    C5H    C6H
  3969. NCR2    C7H    C8H    C9H
  3970. NCR3    CAH    CBH    CCH
  3971. NCR4    CDH    CDH    CEH
  3972.  
  3973.  
  3974.  
  3975.  
  3976. ---------------------------------------------------
  3977. APPENDIX    A1
  3978. Cyrix Cx486S/S2/D/D2/DX/DX2/DX4
  3979. IBM   BL486DX/DX2
  3980. configuration Registers
  3981.  
  3982. Register    Full Register Name        Index    size(bits)
  3983. CCR1    Configuration Control Register #1    C1H    8
  3984. CCR2    Configuration Control Register #2    C2H    8
  3985. CCR3    Configuration Control Register #3    C3H    8
  3986. SMAR    SMM Address Region            CDH-CFH 24
  3987. DIR0    Device Identification register #0    FEH    8
  3988. DIR1    Device Identification register #1    FFH    8
  3989.  
  3990.  
  3991. For access to this register You need to do:
  3992.  
  3993. A) write INDEX_OF_REGISTER to I/O port #22H
  3994. B) wait 5-6 clocks
  3995. D) read/write DATA from/to register via I/O port #23
  3996.  
  3997. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  3998.       CPU generated external bus cycle. If You try to read I/O port
  3999.       #22H CPU will generated external bus cycle too. Then index
  4000.       is out of range all operations with port #23H will generate
  4001.       external bus cycle.
  4002.  
  4003. State After Reset:
  4004.     CCR1    00H
  4005.     CCR2    00H
  4006.     CCR3    00H
  4007.     SMAR    0
  4008.     DIR0    see DIR0 description
  4009.     DIR1    see DIR1 description
  4010.  
  4011.  
  4012. format of registers:
  4013.  
  4014. CCR1:
  4015. Bit    Name    Description
  4016. 7..5        Reserved
  4017.  
  4018. 4    NO_LOCK    (Negate LOCK#)
  4019. 3    MMAC    (Main Memory Access)
  4020.         If =1 then all data access which occur within SMI
  4021.         routine (when SMAC=1) accessing main memory instead
  4022.         SMM space
  4023.         =0 No affects on access
  4024. 2    SMAC    (System Managment Memory Access)
  4025.         If =1 Any access within SMM memory space issued with SMAADS#
  4026.         output active, SMI# ignored
  4027.         =0 No affects on access
  4028. 1    SMI    (Enable SMM pins)
  4029.         If =1 then enable SMI# i/o pin and SMADS# output pin
  4030.         =0 Float it
  4031. 0    RPL    (Enable RPL pins)
  4032.         If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  4033.         =0 Float it
  4034.  
  4035.  
  4036. CCR2:
  4037. Bit    Name    Description
  4038. 7    SUSP    (Enable Suspend pins)
  4039.         If =1 SUSP# input and SUSPA# output pins enabled
  4040.         =0 Float
  4041. 6    BWRT    (Enable Burst Write Cycle)
  4042.         If =1 enable use of 16byte burst WB cycle
  4043.         =0 disable
  4044. 5    BARB    (Enable cache coherency on Bus Arbitration)
  4045.         If =1 enable write back of all dirty cache data when
  4046.         HOLD is requered and prior to asserting HLDA.
  4047.         =0 isable
  4048. 4    WT1    (Write-Through Region 1)
  4049.         If =1 Forces all writes to the 640KB-1MB region that
  4050.         hit in cache issued on the external bus
  4051. 3    HALT    (Suspend on HALT)
  4052.         If =1 CPU enters suspend mode following execution
  4053.         HLT instruction.
  4054. 2    LOCK_NW (Lock NW bit)
  4055.         If =1 Prohibits changing the state of NW bit in CR0
  4056. 1    WBAK    (Enable WB Cache Interface pins)
  4057.         If =1 then enable INVAL,WM_RST and HITM# pins
  4058.         =0 float it
  4059. 0        Reserved
  4060.  
  4061.  
  4062. CCR3:
  4063. Note: Cyrix Cx486S/D never have CCR3 register.
  4064. Bit    Name    Description
  4065. 7..2        Reserved
  4066. 1    NMIEN    (NMI Enable)
  4067.         If =1 then NMI enable during SMM
  4068.         If =0 NMI don't recognizing during SMM
  4069. 0      SMI_LOCK (SMM Register Lock)
  4070.         If =1 the following SMM control bits can not
  4071.         be modified:
  4072.              CCR1: bits 1,2,3
  4073.              CCR3: bit 1
  4074.         But this bit may be changed in SMM.
  4075.         This bit (SMI_LOCK) clearing RESET only.
  4076.  
  4077.  
  4078. SMAR:
  4079. (Index CDh)
  4080. Bit    Description
  4081. 7..0    A31..A24 bits of starting adress of SMM region
  4082. (Index CEh)
  4083. Bit    Description
  4084. 7..0    A23..A16 bits of starting adress of SMM region
  4085. (Index CFh)
  4086. Bit    Description
  4087. 7..4    A15..A12 bits of starting adress of SMM region
  4088. 3..0    Size of SMM region:
  4089.     0000    SMM region disabled
  4090.     0001    4K
  4091.     0010    8K
  4092.     0011    16K
  4093.     0100    32K
  4094.     0101    64K
  4095.     0110    128K
  4096.     0111    256K
  4097.     1000    512K
  4098.     1001    1M
  4099.     1010    2M
  4100.     1011    4M
  4101.     1100    8M
  4102.     1101    16M
  4103.     1110    32M
  4104.     1111    4K
  4105.  
  4106.  
  4107. DIR0:
  4108. Note: Cyrix Cx486S/D never have DIR0 register.
  4109. Bit    Description
  4110. 7..0    (Device Identification)
  4111.     for Cx486SLC/e          = 00h
  4112.     for Cx486DLC          = 01h
  4113.     for Cx486SLC2          = 02h
  4114.     for Cx486DLC2          = 03h
  4115.     for Cx486SRx          = 04h
  4116.     for Cx486DRx          = 05h
  4117.     for Cx486SRx2          = 06h
  4118.     for Cx486DRx2          = 07h
  4119.     for Cx486SRu          = 08h  ??
  4120.     for Cx486DRu          = 09h  ??
  4121.     for Cx486SRu2          = 0Ah  ??
  4122.     for Cx486DRu2          = 0Bh  ??
  4123.     for Cx486S (B step)   = 10h
  4124.     for Cx486S2          = 11h
  4125.     for Cx486S/e          = 12h
  4126.     for Cx486S2/e          = 13h
  4127.     for Cx486DX/BL486DX   = 1Ah
  4128.     for Cx486DX2/BL486DX2 = 1Bh
  4129.     for ST486DX2          = 1Bh
  4130.     for TI486DX2          = 1Bh
  4131.     for Cx486DX4          = 1Fh
  4132.     for Cx5x86   (M1sc)   = 2Dh
  4133.     for Cyrix M1          = 30h
  4134.     for TI486DX4          = 81h  ; This write in Manual, but really?
  4135.     for Cyrix OverDrive   = FDh
  4136.     for TI Potomac's      = FFh  ;; None connections
  4137. !! See Appendix A3 for More Information
  4138.  
  4139. Important Note: The original Cx486SLC never have DIRi registers.
  4140.  
  4141. DIR1:
  4142. Note: Cyrix Cx486S/D never have DIR1 register.
  4143. Bit    Name    Description
  4144. 7..4    SID    Stepping Identificator
  4145. 3..0    RID    Revision Identification
  4146.     Note: For Cx486DX2-001 DIR1=08h
  4147. !! See Appendix A3 for more information
  4148.  
  4149. CPU        DIR0    DIR1    NOTE
  4150. Cx486DX-40    1Ah    05h
  4151. Cx486DX-50    1Ah    05h
  4152. Cx486DX2-50    1Bh    08h
  4153. Cx486DX2-50    1Bh    08h    Marked 001 on pin side of chip
  4154. ST486DX2-66    1Bh    0Bh
  4155. ST486DX2-66    1Bh    0Bh
  4156.  
  4157. Cx486DX2-v80    1Bh    31h    3 VOLT
  4158. Cx486DX4-v100    1Fh    36h    3 VOLT
  4159. Cx5x86-100    2Dh    13h    3 VOLT
  4160. -----------------------------------------------------
  4161. APPENDIX    A2
  4162. TI486SXLC/SXL  configuration Registers
  4163.  
  4164. for TI486SXL
  4165. --------------
  4166. Register    Full Register Name        Index    size(bits)
  4167. CCR0    Configuration Control Register #0    C0H    8
  4168. CCR1    Configuration Control Register #1    C1H    8
  4169. ARR1    Address Region #1            C4H-C6H    24
  4170. ARR2    Address Region #2            C7H-C9H    24
  4171. ARR3    Address Region #3            CAH-CCH 24
  4172. ARR4    Address Region #4            CDH-CFH    24
  4173.  
  4174. for TI486SXLC
  4175. --------------
  4176. Register    Full Register Name        Index    size(bits)
  4177. CCR0    Configuration Control Register #0    C0H    8
  4178. CCR1    Configuration Control Register #1    C1H    8
  4179. ARR1    Address Region #1            C5H-C6H    16
  4180. ARR2    Address Region #2            C8H-C9H    16
  4181. ARR3    Address Region #3            CBH-CCH 16
  4182. ARR4    Address Region #4            CEH-CFH    16
  4183.  
  4184.  
  4185. For access to this register You need to do:
  4186.  
  4187. A) write INDEX_OF_REGISTER to I/O port #22H
  4188. B) wait 5-6 clocks
  4189. D) read/write DATA from/to register via I/O port #23
  4190.  
  4191. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  4192.       generated external bus cycle. If You try to read I/O port
  4193.       #22H CPU will generated external bus cycle too. Then index
  4194.       is out of range all operations with port #23H will generate
  4195.       external bus cycle.
  4196.  
  4197. State After Reset:
  4198.     CCR0    00H
  4199.     CCR1    xxxx xxx0B
  4200.     ARR1    000Fh        ; 4Gbyte Non-Caching Region
  4201.     ARR2    0
  4202.     ARR3    0
  4203.     ARR4    0
  4204.  
  4205. format of registers:
  4206.  
  4207. CCR0:
  4208. Bit    Name    Description
  4209. 7    SUS
  4210.     If =1 then enable SUSP# and SUSPA# pins, which used for
  4211.     put CPU in PowerSave mode.
  4212.     If =0 disable
  4213.  
  4214. 6    CKD (Clock Double)
  4215.     If =0 Disable Clock-double mode
  4216.     If =1 Enable Clock-Double mode
  4217.  
  4218. 5    BARB
  4219.     If =1 then enable flushing internal cache when begining
  4220.     HOLD state.
  4221.     IF =0 disable.
  4222.  
  4223. 4    FLUSH
  4224.     If =1 enable input pin FLUSH#
  4225.     if =0 disable
  4226.  
  4227. 3    KEN
  4228.     If =1 enable input pin KEN#
  4229.     if =0 disable
  4230.  
  4231. 2    A20M
  4232.     If =1 enable input pin A20M#
  4233.     if =0 disable
  4234.  
  4235. 1    NC1
  4236.     If=1 then 640KB-1MB area never caching
  4237.     If=0 caching (but see NCRi)
  4238.  
  4239. 0    NC0
  4240.     If=1 then first 64K of each 1MB bounds not caching,
  4241.     when in Real or Virtual8086 mode
  4242.     If =0 caching
  4243.  
  4244.  
  4245. CCR1:
  4246. Bit    Name    Description
  4247. 7    SM4
  4248.     Access Region 4 Control
  4249.     If=1 then Region 4 is non-cachable SMM Memory Space
  4250.     If=0 Region 4 is non-cachable. SMI# input ignored.
  4251.  
  4252. 6    WP3
  4253.     Access Region 3 Control
  4254.     If=1 then Region 3 is write-protected and cachable
  4255.     If=0 Region 3 is non-cachable.
  4256.  
  4257. 5    WP2
  4258.     Access Region 2 Control
  4259.     If=1 then Region 2 is write-protected and cachable
  4260.     If=0 Region 2 is non-cachable.
  4261.  
  4262. 4    WP1
  4263.     Access Region 1 Control
  4264.     If=1 then Region 1 is write-protected and cachable
  4265.     If=0 Region 1 is non-cachable.
  4266.  
  4267. 3    NMAC
  4268.     Main Memory Access
  4269.     If=1 All data accesses which occur within SMI service routine
  4270.     (or then SMAC=1) will access main memory instead of SMM Memory space
  4271.     If=0 No changes in access
  4272.  
  4273. 2    SMAC
  4274.     System Managment memory access
  4275.     If=1 Any access to addresses within SMM memory space cause external bus
  4276.     cycles to be issued with SMADS# output active. SMI# input is ignored.
  4277.  
  4278. 1    SMI
  4279.     Enable SMM Pins
  4280.     If=1 SMI# input/output pin and SMADS# output pin are enabled
  4281.     If=0 Disabled
  4282.  
  4283. 0    Reserved
  4284.  
  4285.  
  4286.  
  4287. ARRi:
  4288. Byte    Bits    Description
  4289. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  4290.         (Reserved for TI486SXLC)
  4291. 1    7-0    Address bits A23-A16 of non-cachable region start
  4292. 2    7-4    Address bits A15-A12 of non-cacheble region start
  4293. 2    3-0    Size of non-cacheble block:
  4294.         0000  Disable NCRi
  4295.         0001  4K
  4296.         0010  8K
  4297.         0011  16K
  4298.         0100  32K
  4299.         0101  64K
  4300.         0110  128K
  4301.         0111  256K
  4302.         1000  512K
  4303.         1001  1M
  4304.         1010  2M
  4305.         1011  4M
  4306.         1100  8M
  4307.         1101  16M
  4308.         1110  32M
  4309.         1111  4G
  4310.  
  4311. ARRi bytes:
  4312.  
  4313.  
  4314.     Byte
  4315. ARRi    0    1    2
  4316. ARR1    C4H    C5H    C6H
  4317. ARR2    C7H    C8H    C9H
  4318. ARR3    CAH    CBH    CCH
  4319. ARR4    CDH    CDH    CEH
  4320.  
  4321.  
  4322.  
  4323.  
  4324. ---------------------------------------------------
  4325. APPENDIX    A3
  4326. Texas Instruments  TI486DX2,TI486DX4
  4327. configuration Registers
  4328.  
  4329. Register    Full Register Name        Index    size(bits)
  4330. CCR1    Configuration Control Register #1    C1H    8
  4331. CCR2    Configuration Control Register #2    C2H    8
  4332. CCR3    Configuration Control Register #3    C3H    8
  4333. SMAR    SMM Address Region            CDH-CFH 24
  4334. DIR0    Device Identification register #0    FEH    8
  4335. DIR1    Device Identification register #1    FFH    8
  4336.  
  4337.  
  4338. For access to this register You need to do:
  4339.  
  4340. A) write INDEX_OF_REGISTER to I/O port #22H
  4341. B) wait 5-6 clocks
  4342. D) read/write DATA from/to register via I/O port #23
  4343.  
  4344. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  4345.       CPU generated external bus cycle. If You try to read I/O port
  4346.       #22H CPU will generated external bus cycle too. Then index
  4347.       is out of range all operations with port #23H will generate
  4348.       external bus cycle.
  4349.  
  4350. State After Reset:
  4351.     CCR1    00H
  4352.     CCR2    00H
  4353.     CCR3    00H
  4354.     SMAR    0
  4355.     DIR0    see DIR0 description
  4356.     DIR1    see DIR1 description
  4357.  
  4358.  
  4359. format of registers:
  4360.  
  4361. CCR1:
  4362. Bit    Name    Description
  4363. 7..5        Reserved
  4364.  
  4365. 4    NO_LOCK    (Negate LOCK#)
  4366.         If =0  Usuall scheme
  4367.         If =1  previously noncachable locked cycles will be
  4368.         executed as unlocked, result is higher perfomanse.
  4369. 3    MMAC    (Main Memory Access)
  4370.         If =1 then all data access which occur within SMI
  4371.         routine (when SMAC=1) accessing main memory instead
  4372.         SMM space
  4373.         =0 No affects on access
  4374. 2    SMAC    (System Managment Memory Access)
  4375.         If =1 Any access within SMM memory space issued with SMAADS#
  4376.         output active, SMI# ignored
  4377.         =0 No affects on access
  4378. 1    SMI    (Enable SMM pins)
  4379.         If =1 then enable SMI# i/o pin and SMADS# output pin
  4380.         =0 Float it
  4381. 0    RPL    (Enable RPL pins)
  4382.         If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  4383.         =0 Float it
  4384.  
  4385.  
  4386. CCR2:
  4387. Bit    Name    Description
  4388. 7    SUSP    (Enable Suspend pins)
  4389.         If =1 SUSP# input and SUSPA# output pins enabled
  4390.         =0 Float
  4391. 6    BWRT    (Enable Burst Write Cycle)
  4392.         If =1 enable use of 16byte burst WB cycle
  4393.         =0 disable
  4394. 5    BARB    (Enable cache coherency on Bus Arbitration)
  4395.         If =1 enable write back of all dirty cache data when
  4396.         HOLD is requered and prior to asserting HLDA.
  4397.         =0 isable
  4398. 4    WT1    (Write-Through Region 1)
  4399.         If =1 Forces all writes to the 640KB-1MB region that
  4400.         hit in cache issued on the external bus
  4401. 3    HALT    (Suspend on HALT)
  4402.         If =1 CPU enters suspend mode following execution
  4403.         HLT instruction.
  4404. 2    LOCK_NW (Lock NW bit)
  4405.         If =1 Prohibits changing the state of NW bit in CR0
  4406. 1    WBAK    (Enable WB Cache Interface pins)
  4407.         If =1 then enable INVAL,WM_RST and HITM# pins
  4408.         =0 float it
  4409. 0        Reserved
  4410.  
  4411.  
  4412. CCR3:
  4413. Note: Cyrix Cx486S/D never have CCR3 register.
  4414. Bit    Name    Description
  4415. 7..4        Reserved
  4416. 3    SM_MODE (SMM Mode Select)
  4417.         If =0 then Normal SMM mode (Cyrix style)
  4418.         If =1 then SL-compatible mode
  4419.             (but SMI_LOCK MUST BE 0)
  4420.         Note: For more info refer to
  4421.            "TI486DX2 Microprocessor SM Mode Programming Guide"
  4422.            // Texas Instruments 1995 (literature number SRZU019)
  4423. 2        Reserved
  4424. 1    NMIEN    (NMI Enable)
  4425.         If =1 then NMI enable during SMM
  4426.         If =0 NMI don't recognizing during SMM
  4427. 0      SMI_LOCK (SMM Register Lock)
  4428.         If =1 the following SMM control bits can not
  4429.         be modified:
  4430.              CCR1: bits 1,2,3
  4431.              CCR3: bit 1
  4432.              Any SMAR bits
  4433.         But this bit may be changed in SMM.
  4434.         This bit (SMI_LOCK) clearing RESET only.
  4435.  
  4436.  
  4437. SMAR:
  4438. (Index CDh)
  4439. Bit    Description
  4440. 7..0    A31..A24 bits of starting adress of SMM region
  4441. (Index CEh)
  4442. Bit    Description
  4443. 7..0    A23..A16 bits of starting adress of SMM region
  4444. (Index CFh)
  4445. Bit    Description
  4446. 7..4    A15..A12 bits of starting adress of SMM region
  4447. 3..0    Size of SMM region:
  4448.     0000    SMM region disabled
  4449.     0001    4K
  4450.     0010    8K
  4451.     0011    16K
  4452.     0100    32K
  4453.     0101    64K
  4454.     0110    128K
  4455.     0111    256K
  4456.     1000    512K
  4457.     1001    1M
  4458.     1010    2M
  4459.     1011    4M
  4460.     1100    8M
  4461.     1101    16M
  4462.     1110    32M
  4463.     1111    4K
  4464.  
  4465.  
  4466. DIR0:
  4467. Bit    Description
  4468. 7..0    (Device Identification)
  4469.     for TI486DX2  =     1Bh  (compare with Cyrix's DIR0)
  4470.     for TI486DX4  =     81h  (in Manual, but Who Know?)
  4471.  
  4472.  
  4473. DIR1:
  4474. Bit    Name    Description
  4475. 7    MID    Manafacturer ID
  4476.         0 = Cyrix
  4477.         1 = Texas Instruments
  4478. 6..4    SID    Stepping Identificator
  4479. 3..0    RID    Revision Identification
  4480.     Note: It's error in Manual,'cos TI486DX2 return 32h in DIR1,
  4481.           but Non B2h what we wait.
  4482. ----------------------------------------------
  4483. APPENDIX    B
  4484. Codes which returned after Reset in EDX
  4485.  
  4486.                   DH     DLType of CPU   Steppin       Model ID   Revision
  4487.  
  4488. i386DX        A         (00h)    ???
  4489.         B0-B10          03h    03h
  4490.         D0            05h
  4491.         D1-D2            08h
  4492.         E0,F0            08h
  4493.  
  4494. Am386DX/DXL    A          03h    05h
  4495.         B            08h
  4496.  
  4497. i386SX        A0          23h    04h
  4498.         B            05h
  4499.         C,D,E            08h
  4500.  
  4501. Am386SX/SXL    A1          23h    05h
  4502.         B            08h
  4503.  
  4504. Intel386CXSA    A          23h    09h
  4505.  
  4506. Intel386CXSB    A          23h    09h
  4507.  
  4508. i386EX        A          23h    09h
  4509.  
  4510. Intel386SXSA    ?          23h    09h
  4511.  
  4512. i376        A0          33h    05h
  4513.         B            08h
  4514.  
  4515. i386SL        A0-A3          43h    0xh (05H)
  4516.         B0-B1            1xh
  4517.  
  4518. RapidCAD (tm)    A          03h    40h
  4519.         B            41h
  4520.  
  4521. IBM 386SLC    A          A3h    xxh
  4522.  
  4523. Cx486SLC    A          04h    10h
  4524.  
  4525. TI486SLC/DLC/e    A          04h    10h
  4526.         B            11h
  4527.  
  4528. TI486SXL/SXLC    A          04h    10h
  4529.         B            11h
  4530.  
  4531. i486DX        A0/A1          04h    00h
  4532.         B2-B6            01h
  4533.         C0            02h
  4534.         C1            03h
  4535.         D0            04h
  4536.         cA2,cA3            10h
  4537.         cB0,cB1            11h
  4538.         cC0            13h
  4539.         aA0,aA1            14h    ; SL Enhanced
  4540.         aB0            15h    ; SL Enhanced
  4541.  
  4542. Am486DX        any          04h    12h
  4543.  
  4544. UMC U5SD    any          04h    1xh
  4545.  
  4546. i486SX        A0          04h    20h
  4547.         B0            22h
  4548.         ??            23h    ; SL Enhanced 1994 ???
  4549.         gAx            24h
  4550.         cA0            27h
  4551.         cB0            28h
  4552.         aA0,aA1            2Ah    ; SL Enhanced
  4553.         aB0,aC0            2Bh    ; SL Enhanced
  4554.  
  4555. i487SX        A0          04h    20h
  4556.         B0            21h
  4557.  
  4558. UMC U5S        any          04h    23h
  4559.  
  4560. UMC U5SX 486-A    any          04h    23h
  4561.  
  4562. UMC U5SD    any          04h    23h
  4563.  
  4564.  
  4565. Cx5x86        any          04h    2Dh    ; ???????
  4566.  
  4567. i486DX2    &    A0-A2          04h    32h
  4568. OverDrive (tm)    B1            33h
  4569.         aA0,aA1            34h    ; SL Enhanced
  4570.         aB0,aC0            35h    ; SL Enhanced
  4571.  
  4572. Am486DX2    any          04h    32h    ; Include 80MHz
  4573.  
  4574. Am486DXL2    any          04h    32h
  4575.  
  4576. Am486DX4    any          04h    32h    ; Non Ehnanced
  4577.         any          04h    84h    ; Enhanced in WT mode
  4578.                   04h    94h    ; Enhanced in WB mode
  4579.  
  4580. i486SL        A          04h    40h
  4581.  
  4582. i486SX2        aC0          04h    5Bh    ; SL Enhanced
  4583.  
  4584. IntelSX2 (tm)    A          04h    5xh
  4585. OverDrive (tm)
  4586.  
  4587. WB Enh IntelDX2    A          04h    70h    ; in WB mode
  4588. (P24D)                    36h    ; in WT mode
  4589.  
  4590. IBM BL486DX2    A          04h    80h   ; PRELIMINARY
  4591.  
  4592. IntelDX4 (tm)    A          04h    80h
  4593.  
  4594. TI  TI486DX2    any          04h    80h
  4595.  
  4596. TI  TI486DX4    any          04h    81h
  4597.  
  4598. IntelDX4 (tm)    A          14h    80h   ; DX4ODPR     (5V IntelDX4)
  4599. OverDrive (tm)
  4600.  
  4601. Write-Back Enh. A          04h    83h   ; WT Mode
  4602. IntelDX4 (tm)                90h   ; WB mode
  4603.  
  4604. AMD Am5x86    A          04h    Exh   ; WT Mode     ;it's 486, 16KB WB L1
  4605.                     Fxh   ; WB Mode     ; ext.     33MHz
  4606.                              ; int. 133MHz
  4607.  
  4608. IBM  486SLC    A          A4h    0xh
  4609.  
  4610. IBM  486SLC2    Ax          A4h    1xh
  4611.         Bx            2xh
  4612.  
  4613. IBM  486BLX3    A          84h    xxh
  4614.  
  4615. Cyrix M5    all          00h    05h
  4616. (Cx486S/D)
  4617.  
  4618. Cyrix M6    all          00h    06h
  4619. (Cx486DX)
  4620.  
  4621. Cyrix M7    all          00h    07h
  4622. (Cx486DX2)
  4623.  
  4624. Cyrix M8    all          00h    08h
  4625. (Cx486DX4)
  4626.  
  4627. Pentium (P5)    Ax          05h    0xh
  4628.         B1          05h    13h    ; Have FPU bug!
  4629.         C1          05h    15h    ; Have FPU bug!
  4630.         D1          05h    17h    ; Never have FPU bug!!
  4631.  
  4632. Pentium (P54LM) Ax          05h    25h    ; 2.9V for Notebooks.
  4633.  
  4634. Pentium (P54C)    any          05h    2xh
  4635.         B1          05h    21h    ; Have FPU bug!
  4636.         B3          05h    22h    ; Have FPU bug!
  4637.         B5          05h    24h    ; Have FPU bug!
  4638.         C1          05h    25h    ; No   FPU bug!!
  4639.         C2            25h
  4640.         mA1            25h
  4641.         cB1            2Bh
  4642.         mcB1            2Bh
  4643.  
  4644.  
  4645. Pentium (P54CQS) C2          05h    25h
  4646.  
  4647. Pentium Overdrive B1          15h    31h    ; PODP5V
  4648. (Vcc=5V)(P24T)      B2          15h    31h
  4649.           C0          15h    32h
  4650.  
  4651. ;Pentium Overdrive          15h    2xh
  4652. ;(Vcc=3.3V) (P24CT)
  4653.  
  4654. Pentium OverDrive (P54T)      15h    4xh
  4655.  
  4656. Intel Pentium OverDrive          25h    2xh
  4657. (P54M)
  4658.  
  4659. Pentium     Pro (P6)   ?          06h    0xh ; Engineering Sample 133MHz 0.6mkm
  4660.                   06h    11h ; Engineering Sample 150MHz
  4661.  
  4662. OverDrive for Socket 8    (P6T) 16h    3xh ;
  4663.  
  4664. Note: For detection Cyrix's chips refer to APPENDIX A1.
  4665. --------------------------------------------
  4666. APPENDIX C0
  4667. iCOMP index for Intel's Microprocessors
  4668.  
  4669.  
  4670. i386SX-20        32
  4671. i386SX-25        39
  4672. i386SL-25        41
  4673. i386DX-25        49
  4674. i386DX-33        68
  4675. i486SX-20        78
  4676. i486SX-25        100  ; Base model for test iCOMP=100 by define
  4677. i486DX-25        122
  4678. i486SX-33        136
  4679. i486DX-33        166
  4680. i486DX2-20/40        166
  4681. IntelSX2-25/50        180
  4682. i486DX2-25/50        231
  4683. i486DX-50        249
  4684. IntelDX4-20/60        258
  4685. i486DX2-33/66        297
  4686. Pentium OverDrive-20/50 314  ; P24T
  4687. IntelDX4-25/75        319  ; P24C
  4688. IntelDX4-33/100        435  ; P24C
  4689. Pentium OverDrive-25/63    443  ; P24T
  4690. Pentium-(510\60)    510  ; P5
  4691. Pentium-(567\66)    567  ; P5
  4692. Pentium OverDrive-33/83 581  ; P24T
  4693. Pentium-(610\75)    610  ; P54C,P54LM
  4694. Pentium-(735\90)    735  ; P54C,P54LM
  4695. Pentium-(815\100)    815  ; P54C
  4696. Pentium-(1000\120)    1000 ; P54CSQ
  4697. Pentium-(133)        1110 ; P54CSQ
  4698. ----------------------------------------------
  4699. APPENDIX C1
  4700. Cyrix Microprocessors Relative Perfomance
  4701.  
  4702. Cyrix Inc. Used for declaration of perfomance of
  4703. theys microprocessors tests based on PC Bench 8.0
  4704. and normalization.
  4705.  
  4706. CPU        Perfomance Scores
  4707. Cx486SLC-25    36
  4708. Cx486SLC-33    39
  4709. Cx486SLC2-50    40
  4710. Cx486DLC-33    69
  4711. Cx486DLC-40    83
  4712. Cx486DX-33    100    ; <--- Base Point
  4713. Cx486DX-40    118
  4714. Cx486DX2-50    139
  4715. Cx486DX-50    148
  4716. Cx486DX2-66    179
  4717. Cx486DX2-V80    209
  4718.  
  4719.  
  4720.  
  4721. ------------------------------------------------
  4722. APPENDIX D0
  4723. Pentium P54C+ Build-in APIC
  4724. (Advanced programmable Interrupt Controller)
  4725.  
  4726.  
  4727. Base Address of Build-in APIC in memory location
  4728. is 0FEE00000H.
  4729.  
  4730. Map of APIC REgisters:
  4731.  
  4732. Offset (hex)    Description            Read/Write state
  4733. 0        Reserved
  4734. 10        Reserved
  4735. 20        Local APIC ID            R/W
  4736. 30        Local APIC Version        R
  4737. 40-70        Reserved
  4738. 80        Task Priority Register        R/W
  4739. 90        Arbitration Priority Register    R
  4740. A0        Processor Priority Register    R
  4741. B0        EOI Register            W
  4742. C0        Remote read            R
  4743. D0        Logical Destination        R/W
  4744. E0        Destination Format Register    0..27  R
  4745.                         28..31 R/W
  4746. F0        Spurious Interrupt Vector Reg.    0..3   R
  4747.                         4..9   R/W
  4748. 100-170        ISR  0-255            R
  4749. 180-1F0        TMR  0-255            R
  4750. 200-270        IRR  0-255            R
  4751. 280        Error Status Register        R
  4752. 290-2F0        Reserved
  4753. 300        Interrupt Command Reg. (0-31)    R/W
  4754. 310        Interrupt Command Reg. (32-63)    R/W
  4755. 320        Local Vector Table (Timer)    R/W
  4756. 330-340        Reserved
  4757. 350        Local Vector Table (LINT0)    R/W
  4758. 360        Local Vector Table (LINT1)    R/W
  4759. 370        Local Vector Table (ERROR)    R/W
  4760. 380        Initial Count Reg. for Timer    R/W
  4761. 390        Current Count of Timer        R
  4762. 3A0-3D0        Reserved
  4763. 3E0        Timer Divide Configuration Reg.    R/W
  4764. 3F0        Reserved
  4765.  
  4766.  
  4767. Note: Pentium-120MHz (Step C2)    Never have APIC
  4768.  
  4769. ---------------------------------------------------
  4770. APPENDIX D1   INTEL 386/486SL REGISTERS
  4771.  
  4772. Note: Intel Chipset for SL microprocessors (i386SL,i486SL) contain
  4773.       self CPU and 82360SL chip.
  4774.  
  4775.  
  4776. [i386SL]
  4777. Note: address of register in Normal I/O space
  4778.  
  4779. Name of Register    Address        Default Value    Where placed    Size
  4780. CPUPWRMODE        22h        0        CPU        16
  4781. CFGSTAT            23h        0        82360SL        8
  4782. CFGINDEX        24h        0        82360SL        16
  4783. CFGDATA            25h        xxh        82360SL        16
  4784. EMSCNTLREG        28h        0        CPU        8
  4785. EMSINDEXREG        2Ah        0        CPU        16
  4786. EMSDPREG        2Ch        xxh        CPU        16
  4787. PORT92            92h        0        CPU        8
  4788. PORT102               102h        0        CPU        8
  4789. FAIL SAFE NMI CTRL     461h        0        CPU        8
  4790. The followed ports visible only when they enabled,
  4791. Any writes to this ports caused the action it named.
  4792. FAST CPU RESET           EFh        N/A        82360SL        8
  4793. FAST A20 GATE           EEh        N/A        82360SL        8
  4794. SLOW CPU           F4h        N/A        CPU        8
  4795. FAST CPU           F5h        N/A        CPU        8
  4796. SFS DISABLE           F9h        N/A        CPU        8
  4797. SFS ENABLE           FBh        N/A        CPU        8
  4798.  
  4799.  
  4800. Format of CPUPWRMODE register (i386SL):
  4801. Bits    Name    Description
  4802. 15    DT    If Unlock Status {  // See bit 0 of this register
  4803.             if bit=0 then access to 82360SL
  4804.             if bit=1 then access to CPUPWRMODE register
  4805.                 }
  4806.         If Lock Staus    {   // i.e.SB=1
  4807.             (De-Turbo Select Bit) Selected clock speed
  4808.             If bit=0 then EFI/2
  4809.             If bit=1 then EFI/4
  4810.                 }
  4811. 14    0    Reserved
  4812. 13..11    IMCPC    (Idle MCP Clock)
  4813.         13.12.11    Description
  4814.         000    EFI
  4815.         001    EFI/2
  4816.         010    EFI/4
  4817.         011    EFI/8
  4818.         100    EFI/16
  4819.         101    Reserved
  4820.         110    Reserved
  4821.         111    Stop Clock
  4822. 10,9    SLC    (Slow CPU clock)
  4823.         10.9    Description
  4824.         00    EFI
  4825.         01    EFI/2
  4826.         10    EFI/4
  4827.         11    EFI?8
  4828. 8    CPUCNFG
  4829.         If =1 CPU Lock. (Write Protect to CPUPMODE register)
  4830. 7    FD    (Flash Disk Enable)
  4831.         If bit=1 then phisical addresses D0000H - DFFFFh
  4832.         automatically never caching.
  4833. 6    0    Reserved
  4834. 5,4    FCC    (Fast CPU clock)
  4835.         5.4    Description
  4836.         00    EFI
  4837.         01    EFI/2
  4838.         10    EFI/4
  4839.         11    EFI/8
  4840. 3,2    US    (Unit Select)
  4841.         Select Unit of 82360SL which will be accessable through 23h-25h
  4842.         I/O Ports
  4843.         3.2    Description
  4844.         00    On-Board Memory Controller
  4845.         01    Cache Unit
  4846.         10    Internal Bus Unit
  4847.         11    External Bus Unit
  4848. 1    UE    (Unit Enable)
  4849.         If =1 Enable to Access Units
  4850.         else enable to access System bus.
  4851. 0    SB    (Status Bit)
  4852.         If =0 Enable access to CPUPWRMODE register
  4853.         If =1 Disable
  4854.  
  4855.  
  4856. Format of EMSCNTLREG:
  4857. Bits    Description
  4858. 7    (Global Enable)
  4859.     If =1 EMS enable
  4860. 6    Valid bit
  4861. 5    EMSDP Status Bit (Read Only)
  4862. 4..2    Reserved
  4863. 1..0    Active EMS Set (0-3)
  4864.  
  4865.  
  4866. Format of EMSINDEXREG:
  4867. Bits    Description
  4868. 15..10    Reserved
  4869. 9..8    EMS set (0-3)
  4870. 7..6    Reserved
  4871. 5..0    EMS Page Register Index (0-64)
  4872.  
  4873. Format of EMSDPREG:
  4874. Bits    Description
  4875. 15    This EMS Page Enable (i.e. page indexed by EMSINDEXREG)
  4876. 14    EMS Valid bit
  4877. 13..11    reserved
  4878. 10..0    Address lines A24..A14 for page selected by EMSINDEXREG
  4879.  
  4880. Important Note:
  4881. i386SL have SIGNATURE register have index 30Eh in On-Board Memory Controller
  4882. Configuration Space. This Register contain  Stepping Info of i386SL.
  4883. Stepping    Signature Register    DX register after reset
  4884. A0        4300h            4310h
  4885. A1        4300h            4310h
  4886. A2        4301h            4310h
  4887. A3        4302h            4310h
  4888. B0        4310h            4311h
  4889. B1        4311h            4311h
  4890.  
  4891.  
  4892. [i486SL]
  4893. Note: address of register in Normal I/O space
  4894.  
  4895. Name of Register    Address        Default Value    Where placed    Size
  4896. CPUPWRMODE        22h        100H        CPU        16
  4897. CFGSTAT            23h        0        82360SL        8
  4898. CFGINDEX        24h        0        82360SL        16
  4899. CFGDATA            25h        xxh        82360SL        16
  4900. PORT92            92h        0        CPU        8
  4901. PORT102               102h        0        CPU        8
  4902. FAIL SAFE NMI CTRL     461h        0        CPU        8
  4903. The followed ports visible only when they enabled
  4904. FAST CPU RESET           EFh        N/A        82360SL        8
  4905. FAST A20 GATE           EEh        N/A        82360SL        8
  4906. SLOW CPU           F4h        N/A        CPU        8
  4907. FAST CPU           F5h        N/A        CPU        8
  4908. SFS DISABLE           F9h        N/A        CPU        8
  4909. SFS ENABLE           FBh        N/A        CPU        8
  4910.  
  4911.  
  4912. Format of CPUPWRMODE register (i486SL):
  4913. Bits    Name    Description
  4914. 15    DT    If Unlock Status {  // See bit 0 of this register
  4915.             if bit=0 then access to 82360SL
  4916.             if bit=1 then access to CPUPWRMODE register
  4917.                 }
  4918.         If Lock Staus    {   // i.e.SB=1
  4919.             (De-Turbo Select Bit) Selected clock speed
  4920.             If bit=0 then EFI/2
  4921.             If bit=1 then EFI/4
  4922.                 }
  4923. 14..13    0    Reserved
  4924. 12    FPUERROR
  4925.         This bit controlled access to I/O port 0F0h,
  4926.         if =0 then access to internal F0h port,
  4927.         If =1 then access ISA bus.
  4928. 11..9    0    Reserved
  4929. 8    CPUCNFG
  4930.         If =1 CPU Lock. (Write Protect to CPUPMODE register)
  4931. 7    0    RESERVED
  4932. 6,5    FCC    (Fast CPU clock)
  4933.         5.4    Description
  4934.         00    CPUCLK=definition=EFI/2
  4935.         01    CPUCLK/2
  4936.         10    CPUCLK/4
  4937.         11    CPUCLK/8
  4938. 4    0    Reserved
  4939. 3,2    US    (Unit Select)
  4940.         Select Unit of 82360SL which will be accessable through 23h-25h
  4941.         I/O Ports
  4942.         3.2    Description
  4943.         00    On-Board Memory Controller
  4944.         01    Reserved
  4945.         10    Internal Bus Unit
  4946.         11    External Bus Unit
  4947. 1    UE    (Unit Enable)
  4948.         If =1 Enable to Access Units
  4949.         else enable to access System bus.
  4950. 0    SB    (Status Bit)
  4951.         If =0 Enable access to CPUPWRMODE register
  4952.         If =1 Disable
  4953.  
  4954.  
  4955. Important Note:
  4956. i486SL have SIGNATURE register have index 70Ah in On-Board Memory Controller
  4957. Configuration Space. This Register contain  Stepping Info of i486SL.
  4958. Format Of this register provided below:
  4959. Bits    Description
  4960. 15..12    Member of Family (4h - SL)
  4961. 11..8    Family    (4h - 486 family)
  4962. 7..0    Revision Name (Not Same as in DX after reset)
  4963.  
  4964.  
  4965.  
  4966. ---------------------------------------------
  4967. APPENDIX E
  4968. Pentium (tm) Processor Pairing Instruction
  4969.  
  4970. Pentium (tm) is superscalar microprocessor
  4971. i.e. it may execute >1 instruction per CLK
  4972. cycle. It may execute maximum 2 instruction
  4973. per cycle.It have two integer pipes to execute
  4974. instruction. This pipes not same, and some
  4975. instruction may pairing (i.e. execute together)
  4976. (only if not link with this 2 instruction)
  4977. only in U pipe, some other only in V pipe, other
  4978. in any pipe,other absolutely not pairing and they
  4979. executed on U pipe only.
  4980.  
  4981. ------ Integer Part
  4982.  
  4983. Note:
  4984.     PU - is pairable if issued to U pipe
  4985.     PV - is pairable if issued to V pipe
  4986.     UV - pairable in either pipe
  4987.  
  4988.  
  4989. ADC    Reg,Reg        PU
  4990.     Reg,Mem        PU
  4991.     Reg,Imm        PU
  4992.     Mem,Reg        PU
  4993.     Mem,Imm        PU
  4994. ADD    Reg,Reg        UV
  4995.     Reg,Mem        UV
  4996.     Reg,Imm        UV
  4997.     Mem,Reg        UV
  4998.     Mem,Imm        UV
  4999. AND    Reg,Reg        UV
  5000.     Reg,Mem        UV
  5001.     Reg,Imm        UV
  5002.     Mem,Reg        UV
  5003.     Mem,Imm        UV
  5004. CALL    direct        PV
  5005. CMP    Reg,Reg        UV
  5006.     Reg,Mem        UV
  5007.     Reg,Imm        UV
  5008.     Mem,Reg        UV
  5009.     Mem,Imm        UV
  5010. DEC    Reg        UV
  5011.     Mem        UV
  5012. INC    Reg        UV
  5013.     Mem        UV
  5014. Jcc    any        PV
  5015. JMP    Short        PV
  5016.     Direct        PV
  5017. LEA    Reg,Mem        UV
  5018. MOV    Reg,Reg/Mem/Imm    UV
  5019.     Mem,Reg        UV
  5020. NOP            UV
  5021. OR    Reg,Reg        UV
  5022.     Reg,Mem        UV
  5023.     Reg,Imm        UV
  5024.     Mem,Reg        UV
  5025.     Mem,Imm        UV
  5026. POP    Reg        UV
  5027. PUSH    Reg        UV
  5028.     Imm        UV
  5029. Rotates/Shifts:
  5030.     Reg,1        PU
  5031.     Mem,1        PU
  5032.     Reg,Imm        PU
  5033.     Mem,Imm        PU
  5034. SUB    Reg,Reg        UV
  5035.     Reg,Mem        UV
  5036.     Reg,Imm        UV
  5037.     Mem,Reg        UV
  5038.     Mem,Imm        UV
  5039. TEST    Reg,Reg        UV
  5040.     Mem,Reg        UV
  5041.     Acc,Imm        UV
  5042. XOR    Reg,Reg        UV
  5043.     Reg,Mem        UV
  5044.     Reg,Imm        UV
  5045.     Mem,Reg        UV
  5046.     Mem,Imm        UV
  5047.  
  5048.  
  5049.  _____    Floating Part
  5050.  
  5051. Note:    FX  -  Pairing with FXCH
  5052.     (All other never pairing)
  5053.  
  5054. FABS            FX
  5055. FADD            FX
  5056. FADDP            FX
  5057. FCHS            FX
  5058. FCOM            FX
  5059. FCOMP            FX
  5060. FDIV/R/P/RP        FX
  5061. FLD   m32,m64,ST(i)    FX    Note: FLD m80 not pairing
  5062. FMUL/P            FX
  5063. FSUB/P/R/RP        FX
  5064. FTST            FX
  5065. FUCOM/P/PP        FX
  5066.  
  5067.  
  5068. For more information refer to:
  5069. 1) Optimization for Intel's 32-Bit Processors
  5070.   (Application Note AP-500)
  5071.   Gary CArleton)
  5072.   // Intel Corp. 1993
  5073.   // Order Number 241799
  5074. 2) Supplement to the Pentium (tm) Processor User's
  5075.    Manual
  5076.   // Intel Corp. 1993.
  5077.  
  5078.  
  5079. ------------------------------------------------------------
  5080. APPENDIX  F0    NON FP OPCODES
  5081.  
  5082.  
  5083. Base Format of opcodes:
  5084. <Basecode> <Postbyte> <offset> <immediate_operands>
  5085.  
  5086.  
  5087. Format of Postbyte:
  5088.  
  5089.   MM RRR MMM
  5090.  
  5091. MM  - Memory addresing mode
  5092. RRR - Register operand address
  5093. MMM - Memory operand address
  5094.  
  5095.  
  5096. RRR    Register Names
  5097. Fields    8bit    16bit    32bit
  5098. 000    AL    AX    EAX
  5099. 001    CL    CX    ECX
  5100. 010    DL    DX    EDX
  5101. 011    BL    BX    EBX
  5102. 100    AH    SP    ESP
  5103. 101    CH    BP    EBP
  5104. 110    DH    SI    ESI
  5105. 111    BH    DI    EDI
  5106.  
  5107.  
  5108. 16bit memory (No 32 bit memory address prefix):
  5109. MMM    Default    MM  Field
  5110. Field    Sreg    00        01        10        11=MMM is reg
  5111. 000    DS    [BX+SI]        [BX+SI+O8]    [BX+SI+O16]
  5112. 001    DS    [BX+DI]        [BX+DI+O8]    [BX+SI+O16]
  5113. 010    SS    [BP+SI]        [BP+SI+O8]    [BP+SI+O16]
  5114. 011    SS    [BP+DI]        [BP+DI+O8]    [BP+DI+O16]
  5115. 100    DS    [SI]        [SI+O8]        [SI+O16]
  5116. 101    DS    [DI]        [DI+O8]        [DI+O16]
  5117. 110    SS    [O16]        [BP+O8]        [BP+O16]
  5118. 111    DS    [BX]        [BX+O8]        [BX+O16]
  5119. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  5120.  
  5121. 32bit memory (Has 67h 32 bit memory address prefix):
  5122. MMM    Default    MM  Field
  5123. Field    Sreg    00        01        10        11=MMM is reg
  5124. 000    DS    [EAX]        [EAX+O8]    [EAX+O32]
  5125. 001    DS    [ECX]        [ECX+O8]    [ECX+O32]
  5126. 010    DS    [EDX]        [EDX+O8]    [EDX+O32]
  5127. 011    DS    [EBX]        [EBX+O8]    [EBX+O32]
  5128. 100 see SIB    [SIB]        [SIB+O8]    [SIB+O32]
  5129. 101    SS    [O32]        [EBP+O8]    [EBP+O32]
  5130. 110    DS    [ESI]        [ESI+O8]    [ESI+O32]
  5131. 111    DS    [EDI]        [EDI+O8]    [EDI+O32]
  5132. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  5133.  
  5134.  
  5135. SIB is (Scale/Base/Index):
  5136.   SS  BBB  III
  5137. Note: SIB address calculated as :
  5138.     <SIB address>=<Base>+<Index>*(2^(Scale))
  5139.  
  5140. Field    Default    Base
  5141. BBB    Sreg    Register    Note
  5142. 000    DS    EAX
  5143. 001    DS    ECX
  5144. 010    DS    EDX
  5145. 011    DS    EBX
  5146. 100    SS    ESP
  5147. 101    DS    O32        If MM=00   (Postbyte)
  5148.     SS    EBP        If MM<>00  (Postbyte)
  5149. 110    DS    ESI
  5150. 111    DS    EDI
  5151.  
  5152. Field    Index
  5153. III    register    Note
  5154. 000    EAX
  5155. 001    ECX
  5156. 010    EDX
  5157. 011    EBX
  5158. 100            Never Index SS can be 00
  5159. 101    EBP
  5160. 110    ESI
  5161. 111    EDI
  5162.  
  5163. Field    Scale coefficient
  5164. SS    =2^(SS)
  5165. 00    1
  5166. 01    2
  5167. 10    4
  5168. 11    8
  5169.  
  5170.  
  5171. Note:
  5172.       <No comments> this code are for 8086 and all other processors
  5173.       NECs  : for NEC/Sony V20/V30/V40/V50 and all clones and upgrades
  5174.       186+  : for 186/188 and higher
  5175.       286+  : for 80286 and higher
  5176.       386+  : for 80386 and higher
  5177.       486+  : for i486 and higher
  5178.       Pentium : for Pentiym
  5179.       <specified> : specified
  5180.  
  5181.  
  5182.  
  5183. Main Table [TABLE00]:
  5184.  
  5185. 00    ADD    mem8,reg8
  5186. 01    ADD    mem,reg
  5187. 02    ADD    reg8,mem8
  5188. 03    ADD    reg,mem
  5189. 04    ADD    AL,imm8
  5190. 05    ADD    AX,imm
  5191. 06    PUSH    ES
  5192. 07    POP    ES
  5193. 08    OR    mem8,reg8
  5194. 09    OR    mem,reg
  5195. 0A    OR    reg8,mem8
  5196. 0B    OR    reg,mem
  5197. 0C    OR    AL,imm8
  5198. 0D    OR    AX,imm
  5199. 0E    PUSH    CS
  5200. 0F    POP    CS    ; 8088 non CMOS versions
  5201.     >>>  TABLE 01    ; NECs & 286+
  5202.     Invalid Opcode    ; 186/188
  5203.  
  5204. 10    ADC    mem8,reg8
  5205. 11    ADC    mem,reg
  5206. 12    ADC    reg8,mem8
  5207. 13    ADC    reg,mem
  5208. 14    ADC    AL,imm8
  5209. 15    ADC    AX,imm
  5210. 16    PUSH    SS
  5211. 17    POP    SS
  5212. 18    SBB    mem8,reg8
  5213. 19    SBB    mem,reg
  5214. 1A    SBB    reg8,mem8
  5215. 1B    SBB    reg,mem
  5216. 1C    SBB    AL,imm8
  5217. 1D    SBB    AX,imm
  5218. 1E    PUSH    DS
  5219. 1F    POP    DS
  5220.  
  5221.  
  5222. 20    AND    mem8,reg8
  5223. 21    AND    mem,reg
  5224. 22    AND    reg8,mem8
  5225. 23    AND    reg,mem
  5226. 24    AND    AL,imm8
  5227. 25    AND    AX,imm
  5228. 26    ES:    segment prefix
  5229. 27    DAA
  5230. 28    SUB    mem8,reg8
  5231. 29    SUB    mem,reg
  5232. 2A    SUB    reg8,mem8
  5233. 2B    SUB    reg,mem
  5234. 2C    SUB    AL,imm8
  5235. 2D    SUB    AX,imm
  5236. 2E    CS:    segment prefix
  5237. 2F    DAS
  5238.  
  5239. 30    XOR    mem8,reg8
  5240. 31    XOR    mem,reg
  5241. 32    XOR    reg8,mem8
  5242. 33    XOR    reg,mem
  5243. 34    XOR    AL,imm8
  5244. 35    XOR    AX,imm
  5245. 36    SS:    segment prefix
  5246. 37    AAA
  5247. 38    CMP    mem8,reg8
  5248. 39    CMP    mem,reg
  5249. 3A    CMP    reg8,mem8
  5250. 3B    CMP    reg,mem
  5251. 3C    CMP    AL,imm8
  5252. 3D    CMP    AX,imm
  5253. 3E    DS:    segment prefix
  5254. 3F    AAS
  5255.  
  5256. 40    INC    AX
  5257. 41    INC    CX
  5258. 42    INC    DX
  5259. 43    INC    BX
  5260. 44    INC    SP
  5261. 45    INC    BP
  5262. 46    INC    SI
  5263. 47    INC    DI
  5264. 48    DEC    AX
  5265. 49    DEC    CX
  5266. 4A    DEC    DX
  5267. 4B    DEC    BX
  5268. 4C    DEC    SP
  5269. 4D    DEC    BP
  5270. 4E    DEC    SI
  5271. 4F    DEC    DI
  5272.  
  5273.  
  5274. 50    PUSH    AX
  5275. 51    PUSH    CX
  5276. 52    PUSH    DX
  5277. 53    PUSH    BX
  5278. 54    PUSH    SP
  5279. 55    PUSH    BP
  5280. 56    PUSH    SI
  5281. 57    PUSH    DI
  5282. 58    POP    AX
  5283. 59    POP    CX
  5284. 5A    POP    DX
  5285. 5B    POP    BX
  5286. 5C    POP    SP
  5287. 5D    POP    BP
  5288. 5E    POP    SI
  5289. 5F    POP    DI
  5290.  
  5291. 60    PUSHA            ;NECs & 186+
  5292. 61    POPA            ;NECs & 186+
  5293. 62    BOUND    reg,mem        ;NECs & 186+
  5294. 63    ARPL    reg,mem        ;286+ PM
  5295. 64    FS:    segment prefix    ;386+
  5296. 65    GS:    segment prefix    ;386+
  5297. 66    Memory access size prefix    ;386+
  5298. 67    Operands size prefix        ;386+
  5299. 68    PUSH    imm        ;NECs & 186+
  5300. 69    IMUL    reg,imm,mem    ;NECs & 186+
  5301. 6A    PUSH    imm8        ;NECs & 186+
  5302. 6B    IMUL    reg,imm8,mem    ;NECs & 186+
  5303. 6C    INSB            ;186+
  5304. 6D    INS            ;186+
  5305. 6E    OUTSB            ;186+
  5306. 6F    OUTS            ;186+
  5307.  
  5308. 70    JO    rel8
  5309. 71    JNO    rel8
  5310. 72    JC    rel8
  5311. 73    JNC    rel8
  5312. 74    JZ    rel8
  5313. 75    JNZ    rel8
  5314. 76    JNA    rel8
  5315. 77    JA    rel8
  5316. 78    JS    rel8
  5317. 79    JNS    rel8
  5318. 7A    JP    rel8
  5319. 7B    JNP    rel8
  5320. 7C    JL    rel8
  5321. 7D    JNL    rel8
  5322. 7E    JNG    rel8
  5323. 7F    JG    rel8
  5324.  
  5325.  
  5326. 80    code extention [1]
  5327. 81    code extention [2]
  5328. 82    code extention [3]
  5329. 83    code extention [4]
  5330. 84    TEST    mem8,reg8
  5331. 85    TEST    mem,reg
  5332. 86    XCHG    mem8,reg8
  5333. 87    XCHG    mem,reg
  5334. 88    MOV    mem8,reg8
  5335. 89    MOV    mem,reg
  5336. 8A    MOV    reg8,mem8
  5337. 8B    MOV    reg,mem
  5338. 8C    code extention [5]
  5339. 8D    LEA    reg,mem
  5340. 8E    code extention [6]
  5341. 8F    code extention [7]
  5342.  
  5343. 90    NOP
  5344. 91    XCHG    AX,CX
  5345. 92    XCHG    AX,DX
  5346. 93    XCHG    AX,BX
  5347. 94    XCHG    AX,SP
  5348. 95    XCHG    AX,BP
  5349. 96    XCHG    AX,SI
  5350. 97    XCHG    AX,DI
  5351. 98    CBW
  5352. 66 98    CWDE        ;386+
  5353. 99    CWD
  5354. 66 99    CDQ        ;386+
  5355. 9A    CALL    FAR    seg:offs
  5356. 9B    WAIT
  5357. 9C    PUSHF
  5358. 66 9C    PUSHFD        ; 386+
  5359. 9D    POPF
  5360. 66 9D    POPFD        ; 386+
  5361. 9E    SAHF
  5362. 9F    LAHF
  5363.  
  5364. A0    MOV    AL,[imm]
  5365. A1    MOV    AX,[imm]
  5366. A2    MOV    [imm],AL
  5367. A3    MOV    [imm],ax
  5368. A4    MOVSB
  5369. A5    MOVS
  5370. A6    CMPSB
  5371. A7    CMPS
  5372. A8    TEST    AL,imm8
  5373. A9    TEST    AX,imm
  5374. AA    STOSB
  5375. AB    STOS
  5376. AC    LODSB
  5377. AD    LODS
  5378. AE    SCASB
  5379. AF    SCAS
  5380.  
  5381.  
  5382. B0    MOV    AL,imm8
  5383. B1    MOV    CL,imm8
  5384. B2    MOV    DL,imm8
  5385. B3    MOV    BL,imm8
  5386. B4    MOV    AH,imm8
  5387. B5    MOV    CH,imm8
  5388. B6    MOV    DH,imm8
  5389. B7    MOV    BH,imm8
  5390. B8    MOV    AX,imm
  5391. B9    MOV    CX,imm
  5392. BA    MOV    DX,imm
  5393. BB    MOV    BX,imm
  5394. BC    MOV    SP,imm
  5395. BD    MOV    BP,imm
  5396. BE    MOV    SI,imm
  5397. BF    MOV    DI,imm
  5398.  
  5399. C0    code extention [8]
  5400. C1    code extention [9]
  5401. C2    RET    NEAR    imm
  5402. C3    RET    NEAR
  5403. C4    LES    reg,mem
  5404. C5    LDS    reg,mem
  5405. C6    code extention [10]
  5406. C7    code extention [11]
  5407. C8    ENTER    imm,imm8    ;NECs & 186+
  5408. C9    LEAVE            ;NECs & 186+
  5409. CA    RET    FAR    imm
  5410. CB    RET    FAR
  5411. CC    INT    3
  5412. CD    INT    imm8
  5413. CE    INTO
  5414. CF    IRET
  5415.  
  5416. D0    code extention    [12]
  5417. D1    code extention    [13]
  5418. D2    code extention    [14]
  5419. D3    code extention    [15]
  5420. D4    AAM    imm8         ; Note: NECs w/o imm8 but D4 0A only
  5421. D5    AAD    imm8         ; Note: NECs w/o imm8 but D4 0A only
  5422. D6    SETALC             ;286+
  5423. D7    XLAT
  5424. D8-DF    ESC    imm6,mem     ; Note: Refer to future part
  5425.                  ; Cooprocessor commands.
  5426.  
  5427. E0    LOOPNZ    rel8
  5428. E1    LOOPZ    rel8
  5429. E2    LOOP    rel8
  5430. E3    JCXZ    rel8
  5431. 66 E3    JECXZ    rel8         ; 386+
  5432. E4    IN    AL,imm8
  5433. E5    IN    AX,imm8
  5434. E6    OUT    imm8,AL
  5435. E7    OUT    imm8,AX
  5436. E8    CALL    NEAR    rel16
  5437. E9    JMP    NEAR    rel16
  5438. EA    JMP    FAR    seg:offs
  5439. EB    JMP    SHORT    rel8
  5440. EC    IN    AL,DX
  5441. ED    IN    AX,DX
  5442. EE    OUT    DX,AL
  5443. EF    OUT    DX,AX
  5444.  
  5445. F0    LOCK    prefix
  5446. F1    SMI             ; AMD Am386/486DXLV
  5447. F2    REPNZ
  5448. F3    REP/REPZ
  5449. F4    HLT
  5450. F5    CMC
  5451. F6    code extention [16]
  5452. F7    code extention [17]
  5453. F8    CLC
  5454. F9    STC
  5455. FA    CLI
  5456. FB    STI
  5457. FC    CLD
  5458. FD    STD
  5459. FE    code extention [18]
  5460. FF    code extention [19]
  5461.  
  5462.  
  5463.  
  5464.  
  5465.  
  5466. [TABLE 01]:
  5467. Note: First Byte of Operation is 0Fh
  5468.  
  5469. 00    Extended Opcode 20                ; 286+
  5470. 01    Extended Opcode 21                ; 286+
  5471. 02    LAR    reg,mem                    ; 286+
  5472. 03    LSL    reg,mem                    ; 286+
  5473. 04    LOADALL         ; Alternative 286        ; 286 only
  5474. 05    LOADALL         ; 286                ; 286 only
  5475. 06    CLTS                        ; 286+
  5476. 07    LOADALL         ; i386,486            ; 386-486, Never Pentium
  5477.     RES3         ; AMD Am386zXLV
  5478.     RES4         ; AMD Am486DXLV
  5479.     ICERET         ; IBM 386SLC,486SLC,486SLC2
  5480. 08    INVD                        ; 486+
  5481. 09    WBINVD                        ; 486+
  5482. 0A-0F    Reserved, INT 6
  5483. 10    UMOV    mem8,reg8 ; Really different op. space    ; 386-486,Never Pentium
  5484.               ; on AMD Amz86zXLV, never P6, Cx5x86+
  5485.     TEST1    mem8,CL      ; NEC V20+
  5486. 11    UMOV    mem,reg      ; see 0Fh,10h
  5487.     TEST1    mem,CL      ; NEC V20+
  5488. 12    UMOV    reg8,mem8 ; see 0Fh,10h
  5489.     CLEAR1    mem8,CL      ; NEC V20+
  5490. 13    UMOV    reg,mem      ; see 0Fh,10h
  5491.     CLEAR1    mem,CL      ; NEC V20+
  5492. 14    SET1    mem8,CL      ; NEC V20+
  5493. 15    SET1    mem,CL      ; NEC V20+
  5494. 16    NOT1    mem8,CL      ; NEC V20+
  5495. 17    NOT1    mem,CL      ; NEC V20+
  5496. 18    TEST1    mem8,imm8 ; NEC V20+
  5497. 19    TEST1    mem,imm8  ; NEC V20+
  5498. 1A    CLEAR1    mem8,imm8 ; NEC V20+
  5499. 1B    CLEAR1    mem,imm8  ; NEC V20+
  5500. 1C    SET1    mem8,imm8 ; NEC V20+
  5501. 1D    SET1    mem,imm8  ; NEC V20+
  5502. 1E    NOT1    mem8,imm8 ; NEC V20+
  5503. 1F    NOT1    mem,imm8  ; NEC V20+
  5504.  
  5505.  
  5506. 20    MOV    reg32,CRn ; 386+
  5507.     ADD4S          ; NEC V20+
  5508. 21    MOV    reg32,DRn ; 386+
  5509. 22    MOV    CRn,reg32 ; 386+
  5510.     SUB4S          ; NEC V20+
  5511. 23    MOV    DRn,reg32 ; 386+
  5512. 24    MOV    reg32,TRn ; 386-486 only (Pentium never have TRs)
  5513. 25
  5514. 26    MOV    TRn,reg32 ; 386-486 only
  5515.     CMPS4S          ; NEC V20+
  5516. 27    reserved opcode
  5517. 28    ROL4    mem8      ; NEC V20+
  5518. 29    reserved opcode
  5519. 2A    ROL4    mem8      ; NEC V20+
  5520. 2B-2F    reserved opcodes
  5521.  
  5522. 30    WRMSR          ; Pentium, IBM 386SLC,486SLC/SLC2
  5523. 31    RDTSC          ; Pentium
  5524.     INS    reg8,reg8 ; NEC V20+   ; Note: NECINS
  5525. 32    RDMSR          ; Pentium, IBM 386SLC,486SLC/SLC2
  5526. 33    EXT    reg8,reg8 ; NEC V20+
  5527.     RDMPC          ; P6
  5528.  
  5529. 40    CMOVO    reg,mem      ; P6
  5530. 41    CMOVNO    reg,mem      ; P6
  5531. 42    CMOVC    reg,mem      ; P6
  5532. 43    CMOVNC    reg,mem      ; P6
  5533. 44    CMOVZ    reg,mem      ; P6
  5534. 45    CMOVNZ    reg,mem      ; P6
  5535. 46    CMOVA    reg,mem      ; P6
  5536. 47    CMOVNA    reg,mem      ; P6
  5537. 48    CMOVS    reg,mem      ; P6
  5538. 49    CMOVNS    reg,mem      ; P6
  5539. 4A    CMOVP    reg,mem      ; P6
  5540. 4B    CMOVNP    reg,mem      ; P6
  5541. 4C    CMOVL    reg,mem      ; P6
  5542. 4D    CMOVNL    reg,mem      ; P6
  5543. 4E    CMOVNG    reg,mem      ; P6
  5544. 4F    CMOVG    reg,mem      ; P6
  5545.  
  5546.  
  5547.  
  5548. 78    SVDC    mem,sreg  ; Cyrix M5+
  5549. 79    RSDC    sreg,mem  ; Cyrix M5+
  5550. 7A    SVLDT    mem      ; Cyrix M5+
  5551. 7B    RSLDT    mem      ; Cyrix M5+
  5552. 7C    SVTS    mem      ; Cyrix M5+
  5553. 7D    RSTS    mem      ; Cyrix M5+
  5554. 7E    SMINT          ; Cyrix M6+
  5555.  
  5556.  
  5557. 80    JO    rel16    ; 386+
  5558. 81    JNO    rel16    ; 386+
  5559. 82    JC    rel16    ; 386+
  5560. 83    JNC    rel16    ; 386+
  5561. 84    JZ    rel16    ; 386+
  5562. 85    JNZ    rel16    ; 386+
  5563. 86    JNA    rel16    ; 386+
  5564. 87    JA    rel16    ; 386+
  5565. 88    JS    rel16    ; 386+
  5566. 89    JNS    rel16    ; 386+
  5567. 8A    JP    rel16    ; 386+
  5568. 8B    JNP    rel16    ; 386+
  5569. 8C    JL    rel16    ; 386+
  5570. 8D    JNL    rel16    ; 386+
  5571. 8E    JNG    rel16    ; 386+
  5572. 8F    JG    rel16    ; 386+
  5573.  
  5574. 90    SETO    mem8    ; 386+
  5575. 91    SETNO    mem8    ; 386+
  5576. 92    SETC    mem8    ; 386+
  5577. 93    SETNC    mem8    ; 386+
  5578. 94    SETZ    mem8    ; 386+
  5579. 95    SETNZ    mem8    ; 386+
  5580. 96    SETNA    mem8    ; 386+
  5581. 97    SETA    mem8    ; 386+
  5582. 98    SETS    mem8    ; 386+
  5583. 99    SETNS    mem8    ; 386+
  5584. 9A    SETP    mem8    ; 386+
  5585. 9B    SETNP    mem8    ; 386+
  5586. 9C    SETL    mem8    ; 386+
  5587. 9D    SETNL    mem8    ; 386+
  5588. 9E    SETNG    mem8    ; 386+
  5589. 9F    SETG    mem8    ; 386+
  5590.  
  5591. A0    PUSH    FS    ; 386+
  5592. A1    POP    FS    ; 386+
  5593. A2    CPUID        ; 486 SL enhanced,Pentium,UMC,i386CX,P6,M1,K5
  5594. A3    BT    mem,reg    ; 386+
  5595. A4    SHLD    mem,reg,imm    ;386+
  5596. A5    SHLD    mem,reg,CL    ;386+
  5597. A6    XBTS    reg,mem,AX,CL    ; Intel (!!!) 80386 steps A0-B0
  5598.     CMPXCHG    mem8,reg8    ; Intel (!!!) 80486 steps A0-B0
  5599. A7    IBTS    mem,AX,CL,reg    ; Intel (!!!) 80386 steps A0-B0
  5600.     CMPXCHG mem,reg        ; Intel (!!!) 80486 steps A0-B0
  5601. A8    PUSH    GS    ; 386+
  5602. A9    POP    GS    ; 386+
  5603. AA    RSM        ; i486 SL Enhanced, i386CX, Pentium etc
  5604. AB    BTS    mem,reg ; 386+
  5605. AC    SHRD    mem,reg,imm    ;386+
  5606. AD    SHRD    mem,reg,CL    ;386+
  5607. AE
  5608. AF    IMUL    reg,mem    ; 386+
  5609.  
  5610. B0    CMPXCHG mem8,reg8    ; 486+ (Intel B1+ step only)
  5611. B0    CMPXCHG mem,reg        ; 486+ (Intel B1+ step only)
  5612. B2    LSS    reg,mem        ; 386+
  5613. B3    BTR    mem,reg        ; 386+
  5614. B4    LFS    reg,mem        ; 386+
  5615. B5    LGS    reg,mem        ; 386+
  5616. B6    MOVZX    reg,mem8    ; 386+
  5617. B7    MOVZX    reg32,mem    ; 386+
  5618. B8
  5619. B9
  5620. BA    code extention [22]
  5621. BB    BTC    mem,reg        ; 386+
  5622. BC    BSF    reg,mem        ; 386+
  5623. BD    BSR    reg,mem        ; 386+
  5624. BE    MOVSX    reg,mem8    ; 386+
  5625. BF    MOVSX    reg32,mem    ; 386+
  5626.  
  5627. C0    XADD    mem8,reg8    ; 486+
  5628. C1    XADD    mem,reg        ; 486+
  5629. C2-C6    reserved opcodes
  5630. C7    code extention [23]
  5631. C8    BSWAP    EAX        ; 486+
  5632. C9    BSWAP    ECX        ; 486+
  5633. CA    BSWAP    EDX        ; 486+
  5634. CB    BSWAP    EBX        ; 486+
  5635. CC    BSWAP    ESP        ; 486+
  5636. CD    BSWAP    EBP        ; 486+
  5637. CE    BSWAP    ESI        ; 486+
  5638. CF    BSWAP    EDI        ; 486+
  5639.  
  5640. D0-FF    reserved opcodes
  5641. FF    BRKEM    imm8        ; NEC V20+
  5642.  
  5643.  
  5644. **************************************************
  5645. CODE EXTENTIONS:
  5646.  
  5647. First byte(s) look at TABLES#00,01
  5648. Next byte have format
  5649.      MMOOOMMM  :  MM is memory mode (see postbyte)
  5650.           OOO select operation in this extention code field
  5651.           MMM is memory field (see Postbyte)
  5652.  
  5653.  
  5654. Code Extention # 1
  5655. (First byte(s) = 80h)
  5656. Field
  5657. OOO    Operation
  5658. 000    ADD    mem8,imm8
  5659. 001    OR    mem8,imm8
  5660. 010    ADC    mem8,imm8
  5661. 011    SBB    mem8,imm8
  5662. 100    AND    mem8,imm8
  5663. 101    SUB    mem8,imm8
  5664. 110    XOR    mem8,imm8
  5665. 111    CMP    mem8,imm8
  5666.  
  5667.  
  5668. Code Extention # 2
  5669. (First byte(s) = 81h)
  5670. Field
  5671. OOO    Operation
  5672. 000    ADD    mem,imm
  5673. 001    OR    mem,imm
  5674. 010    ADC    mem,imm
  5675. 011    SBB    mem,imm
  5676. 100    AND    mem,imm
  5677. 101    SUB    mem,imm
  5678. 110    XOR    mem,imm
  5679. 111    CMP    mem,imm
  5680.  
  5681. Code Extention # 3
  5682. (First byte(s) = 82h)
  5683. Note: i486 Reserved opcode, Never INT6 but do nothing
  5684. Field
  5685. OOO    Operation
  5686. 000    ADD    mem8,simm8
  5687. 001
  5688. 010    ADC    mem8,simm8
  5689. 011    SBB    mem8,simm8
  5690. 100
  5691. 101    SUB    mem8,simm8
  5692. 110
  5693. 111    CMP    mem8,simm8
  5694.  
  5695.  
  5696. Code Extention # 4
  5697. (First byte(s) = 83h)
  5698. Field
  5699. OOO    Operation
  5700. 000    ADD    mem,simm8
  5701. 001
  5702. 010    ADC    mem,simm8
  5703. 011    SBB    mem,simm8
  5704. 100
  5705. 101    SUB    mem,simm8
  5706. 110
  5707. 111    CMP    mem,simm8
  5708.  
  5709.  
  5710. Code Extention # 5
  5711. (First byte(s) = 8Ch)
  5712. Field
  5713. OOO    Operation
  5714. 000    MOV    mem,ES
  5715. 001    MOV    mem,CS
  5716. 010    MOV    mem,SS
  5717. 011    MOV    mem,DS
  5718. 100    MOV    mem,FS    ; 386+
  5719. 101    MOV    mem,GS    ; 386+
  5720. 110
  5721. 111
  5722.  
  5723.  
  5724. Code Extention # 6
  5725. (First byte(s) = 8Eh)
  5726. Field
  5727. OOO    Operation
  5728. 000    MOV    ES,mem
  5729. 001    MOV    CS,mem    ; Non CMOS version of 8086/8088 only
  5730. 010    MOV    SS,mem
  5731. 011    MOV    DS,mem
  5732. 100    MOV    FS,mem    ; 386+
  5733. 101    MOV    GS,mem    ; 386+
  5734. 110
  5735. 111
  5736.  
  5737. Code Extention # 7
  5738. (First byte(s) = 8Fh)
  5739. Note: i486 can eat any OOO.
  5740. Field
  5741. OOO    Operation
  5742. 000    POP    mem
  5743. 001
  5744. 010
  5745. 011
  5746. 100
  5747. 101
  5748. 110
  5749. 111
  5750.  
  5751. Code Extention # 8
  5752. (First byte(s) = C0h)
  5753. Field
  5754. OOO    Operation
  5755. 000    ROL    mem8,imm8 ; 186+
  5756. 001    ROR    mem8,imm8 ; 186+
  5757. 010    RCL    mem8,imm8 ; 186+
  5758. 011    RCR    mem8,imm8 ; 186+
  5759. 100    SHL    mem8,imm8 ; 186+
  5760. 101    SHR    mem8,imm8 ; 186+
  5761. 110    SAL    mem8,imm8 ; 186+
  5762. 111    SAR    mem8,imm8 ; 186+
  5763.  
  5764. Code Extention # 9
  5765. (First byte(s) = C1h)
  5766. Field
  5767. OOO    Operation
  5768. 000    ROL    mem,imm8 ; 186+
  5769. 001    ROR    mem,imm8 ; 186+
  5770. 010    RCL    mem,imm8 ; 186+
  5771. 011    RCR    mem,imm8 ; 186+
  5772. 100    SHL    mem,imm8 ; 186+
  5773. 101    SHR    mem,imm8 ; 186+
  5774. 110    SAL    mem,imm8 ; 186+
  5775. 111    SAR    mem,imm8 ; 186+
  5776.  
  5777. Code Extention # 10
  5778. (First byte(s) = C6h)
  5779. Note: i486 can eat any OOO field.
  5780. Field
  5781. OOO    Operation
  5782. 000    MOV    mem8,imm8
  5783. 001
  5784. 010
  5785. 011
  5786. 100
  5787. 101
  5788. 110
  5789. 111
  5790.  
  5791. Code Extention # 11
  5792. (First byte(s) = C7h)
  5793. Note: i486 can eat any OOO field
  5794. Field
  5795. OOO    Operation
  5796. 000    MOV    mem,imm16
  5797. 001
  5798. 010
  5799. 011
  5800. 100
  5801. 101
  5802. 110
  5803. 111
  5804.  
  5805.  
  5806. Code Extention # 12
  5807. (First byte(s) = D0h)
  5808. Field
  5809. OOO    Operation
  5810. 000    ROL    mem8,1
  5811. 001    ROR    mem8,1
  5812. 010    RCL    mem8,1
  5813. 011    RCR    mem8,1
  5814. 100    SHL    mem8,1
  5815. 101    SHR    mem8,1
  5816. 110    SAL    mem8,1
  5817. 111    SAR    mem8,1
  5818.  
  5819.  
  5820. Code Extention # 13
  5821. (First byte(s) = D1h)
  5822. Field
  5823. OOO    Operation
  5824. 000    ROL    mem,1
  5825. 001    ROR    mem,1
  5826. 010    RCL    mem,1
  5827. 011    RCR    mem,1
  5828. 100    SHL    mem,1
  5829. 101    SHR    mem,1
  5830. 110    SAL    mem,1
  5831. 111    SAR    mem,1
  5832.  
  5833.  
  5834. Code Extention # 14
  5835. (First byte(s) = D2h)
  5836. Field
  5837. OOO    Operation
  5838. 000    ROL    mem8,CL
  5839. 001    ROR    mem8,CL
  5840. 010    RCL    mem8,CL
  5841. 011    RCR    mem8,CL
  5842. 100    SHL    mem8,CL
  5843. 101    SHR    mem8,CL
  5844. 110    SAL    mem8,CL
  5845. 111    SAR    mem8,CL
  5846.  
  5847.  
  5848. Code Extention # 15
  5849. (First byte(s) = D3h)
  5850. Field
  5851. OOO    Operation
  5852. 000    ROL    mem,CL
  5853. 001    ROR    mem,CL
  5854. 010    RCL    mem,CL
  5855. 011    RCR    mem,CL
  5856. 100    SHL    mem,CL
  5857. 101    SHR    mem,CL
  5858. 110    SAL    mem,CL
  5859. 111    SAR    mem,CL
  5860.  
  5861. Code Extention # 16
  5862. (First byte(s) = F6h)
  5863. Field
  5864. OOO    Operation
  5865. 000    TEST    mem8,imm8
  5866. 001
  5867. 010    NOT    mem8
  5868. 011    NEG    mem8
  5869. 100    MUL    mem8
  5870. 101    IMUL    mem8
  5871. 110    DIV    mem8
  5872. 111    IDIV    mem8
  5873.  
  5874. Code Extention # 17
  5875. (First byte(s) = F7h)
  5876. Field
  5877. OOO    Operation
  5878. 000    TEST    mem,imm16
  5879. 001
  5880. 010    NOT    mem
  5881. 011    NEG    mem
  5882. 100    MUL    mem
  5883. 101    IMUL    mem
  5884. 110    DIV    mem
  5885. 111    IDIV    mem
  5886.  
  5887.  
  5888. Code Extention # 18
  5889. (First byte(s) = FEh)
  5890. Field
  5891. OOO    Operation
  5892. 000    INC    mem8
  5893. 001    DEC    mem8
  5894. 010
  5895. 011
  5896. 100
  5897. 101
  5898. 110
  5899. 111
  5900.  
  5901. Code Extention # 19
  5902. (First byte(s) = FFh)
  5903. Field
  5904. OOO    Operation
  5905. 000    INC    mem
  5906. 001    DEC    mem
  5907. 010    CALL    NEAR    mem
  5908. 011    CALL    FAR    mem
  5909. 100    JMP    NEAR    mem
  5910. 101    JMP    FAR    mem
  5911. 110    PUSH    mem
  5912. 111
  5913.  
  5914. Code Extention # 20
  5915. (First byte(s) = 0FH,00H)
  5916. Field
  5917. OOO    Operation
  5918. 000    SLDT    mem    ; 286+
  5919. 001    STR    mem    ; 286+
  5920. 010    LLDT    mem    ; 286+
  5921. 011    LTR    mem    ; 286+
  5922. 100    VERR    mem    ; 286+
  5923. 101    VERW    mem    ; 286+
  5924. 110
  5925. 111
  5926.  
  5927. Code Extention # 21
  5928. (First byte(s) = 0Fh,01h)
  5929. Field
  5930. OOO    Operation
  5931. 000    SGDT    mem    ; 286+
  5932. 001    SIDT    mem    ; 286+
  5933. 010    LGDT    mem    ; 286+
  5934. 011    LIDT    mem    ; 286+
  5935. 100    SMSW    mem    ; 286+
  5936. 101
  5937. 110    LMSW    mem    ; 286+
  5938. 111    INVLPG    mem    ; 486+
  5939.  
  5940.  
  5941. Code Extention # 22
  5942. (First byte(s) = 0Fh,BAh)
  5943. Field
  5944. OOO    Operation
  5945. 000
  5946. 001
  5947. 010
  5948. 011
  5949. 100    BT    mem,imm8 ; 386+
  5950. 101    BTS    mem,imm8 ; 386+
  5951. 110    BTR    mem,imm8 ; 386+
  5952. 111    BTC    mem,imm8 ; 386+
  5953.  
  5954. Code Extention # 23
  5955. (First byte(s) = 0Fh,C7h)
  5956. Field
  5957. OOO    Operation
  5958. 000
  5959. 001    CMPXCHG8B  mem    ; Pentium
  5960. 010
  5961. 011
  5962. 100
  5963. 101
  5964. 110
  5965. 111
  5966.  
  5967.  
  5968.  
  5969.  
  5970. ------------------------------------------------
  5971. APPENDIX  F1  FLOATING POINT OPCODES
  5972.  
  5973.  
  5974. ESC 0  (First byte = D8h)
  5975. ==========================
  5976. ESCAPE 000    MMRRRMMM
  5977. ==========================
  5978.         Operation
  5979. RRR    If MM<>11    If MM=11
  5980. 000    FADD  mem32r    FADD    ST,ST(i)
  5981. 001    FMUL  mem32r    FMUL    ST,ST(i)
  5982. 010    FCOM  mem32r    FCOM    ST(i)
  5983. 011    FCOMP mem32r    FCOMP    ST(i)
  5984. 100    FSUB  mem32r    FSUB    ST,ST(i)
  5985. 101    FSUBR mem32r    FSUBR    ST,ST(i)
  5986. 110    FDIV  mem32r    FDIV    ST,ST(i)
  5987. 111    FDIVR mem32r    FDIVR    ST,ST(i)
  5988.  
  5989.  
  5990.  
  5991. ESC 1  (First byte = D9h)
  5992. ==========================
  5993. ESCAPE 001    MMRRRMMM
  5994. ==========================
  5995.         Operation
  5996. RRR    If MM<>11    If MM=11
  5997. 000    FLD    mem32r    FLD    ST(i)
  5998. 001    empty        FXCH    ST(i)
  5999. 010    FST    mem32r    See Table marked ESC1-Extended codes
  6000. 011    FSTP   mem32r    FSTP    ST(i)
  6001. 100    FLDENV mem    See Table marked ESC1-Extended codes
  6002. 101    FLDCW  mem    See Table marked ESC1-Extended codes
  6003. 110    FSTENV mem    See Table marked ESC1-Extended codes
  6004. 111    FSTCW  mem    See Table marked ESC1-Extended codes
  6005.  
  6006.  
  6007. ESC1-Extended codes:
  6008.    \ RRR
  6009. MMM \    010    100    101    110    111
  6010. 000    FNOP    FCHS    FLD1    F2XM1    FPREM
  6011. 001        FABS    FLDL2T    FYL2X    FYL2XP1
  6012. 010            FLDL2E    FPTAN    FSQRT
  6013. 011            FLDPI    FPATAN    FSINCOS'
  6014. 100        FTST    FLDLG2    FXTRACT    FRNDINT
  6015. 101        FXAM    FLDLN2    FPREM1    FSCALE
  6016. 110            FLDZ    FDECSTP    FSIN'
  6017. 111                FINCSTP    FCOS'
  6018.  
  6019.  
  6020. ' means 387+  (include 287XL/XLT, 187!!!)
  6021.  
  6022.  
  6023. ESC 2  (First byte = DAh)
  6024. ==========================
  6025. ESCAPE 010    MMRRRMMM
  6026. ==========================
  6027.         Operation
  6028. RRR    If MM<>11
  6029. 000    FIADD  mem32i
  6030. 001    FIMUL  mem32i
  6031. 010    FICOM  mem32i
  6032. 011    FICOMP mem32i
  6033. 100    FISUB  mem32i
  6034. 101    FISUBR mem32i
  6035. 110    FIDIV  mem32i
  6036. 111    FIDIVR mem32i
  6037.  
  6038. Note: P6
  6039. DA C0+i     FCMOVB     ST0,STi
  6040. DA C8+i     FCMOVE     ST0,STi
  6041. DA D0+i     FCMOVBE ST0,STi
  6042. DA D8+i     FCMOVU     ST0,STi
  6043.  
  6044.  
  6045. ESC 3  (First byte = DBh)
  6046. ==========================
  6047. ESCAPE 011    MMRRRMMM
  6048. ==========================
  6049.         Operation
  6050. RRR    If MM<>11
  6051. 000    FILD   mem32i
  6052. 001
  6053. 010    FIST   mem32i
  6054. 011    FISTP  mem32i
  6055. 100
  6056. 101    FLD    mem80r
  6057. 110
  6058. 111    FSTP   mem80r
  6059.  
  6060. So,If MM=11 we have next command (first byte = DBh)
  6061. Mnemonic    Second byte of code
  6062. FNENI        E0H    (8087 only, others do nothing)
  6063. FNDISI        E1H    (8087 only, others do nothing)
  6064. FNCLEX        E2H
  6065. FNINIT        E3H
  6066. FSETPM        E4H    (287s only)
  6067. FRSTPM        E5H    (287XL/XLT only)
  6068. FSTB0        E8H    (IIT)
  6069. FSTB2        EAH    (IIT)
  6070. FSTB1        EBH    (IIT)
  6071. F4X4        F1H    (IIT)
  6072. FRINT2        FCH    (Cyrix)
  6073. FUCOMI     ST0,STi E8H+i     (P6)
  6074. FCMOVNB     ST0,STi C0H+i     (P6)
  6075. FCMOVNE     ST0,STi C8H+i     (P6)
  6076. FCMOVNBE ST0,STi D0H+i     (P6)
  6077. FCMOVNU     ST0,STi D8H+i     (P6)
  6078. FCOMPI     ST0,STi F0H+i     (P6)
  6079.  
  6080. ESC 4  (First byte = DCh)
  6081. ==========================
  6082. ESCAPE 100    MMRRRMMM
  6083. ==========================
  6084.         Operation
  6085. RRR    If MM<>11    If MM=11
  6086. 000    FADD  mem64r    FADD    ST,ST(i)
  6087. 001    FMUL  mem64r    FMUL    ST,ST(i)
  6088. 010    FCOM  mem64r    FCOM    ST(i)
  6089. 011    FCOMP mem64r    FCOMP    ST(i)
  6090. 100    FSUB  mem64r    FSUB    ST,ST(i)
  6091. 101    FSUBR mem64r    FSUBR    ST,ST(i)
  6092. 110    FDIV  mem64r    FDIV    ST,ST(i)
  6093. 111    FDIVR mem64r    FDIVR    ST,ST(i)
  6094.  
  6095.  
  6096.  
  6097.  
  6098. ESC 5  (First byte = DDh)
  6099. ==========================
  6100. ESCAPE 101    MMRRRMMM
  6101. ==========================
  6102.         Operation
  6103. RRR    If MM<>11    If MM=11
  6104. 000    FLD    mem64r    FFREE  ST(i)
  6105. 001            FXCH   ST(i)
  6106. 010    FST    mem64r    FST    ST(i)
  6107. 011    FSTP   mem64r    FSTP   ST(i)
  6108. 100    FNRSTOR mem
  6109. 101
  6110. 110    FNSAVE    mem    FUCOM  ST(i)
  6111. 111    FSTSW    mem    FUCOMP ST(i)
  6112.  
  6113.  
  6114. Note: FRICHOP have opcode (DDh FCh) (Cyrix)
  6115.  
  6116.  
  6117.  
  6118.  
  6119. ESC 6  (First byte = DEh)
  6120. ==========================
  6121. ESCAPE 110    MMRRRMMM
  6122. ==========================
  6123.         Operation
  6124. RRR    If MM<>11    If MM=11
  6125. 000    FIADD  mem16i    FADDP    ST(i),ST
  6126. 001    FIMUL  mem16i    FMULP    ST(i),ST
  6127. 010    FICOM  mem16i    FCOMP    ST(i),ST
  6128. 011    FICOMP mem16i
  6129. 100    FISUB  mem16i    FSUBP    ST(i),ST
  6130. 101    FISUBR mem16i    FSUBRP    ST(i),ST
  6131. 110    FIDIV  mem16i    FDIVP    ST(i),ST
  6132. 111    FIDIVR mem16i    FDIVRP    ST(i),ST
  6133.  
  6134.  
  6135. Note: FCOMPP have opcode (DEh D9h) (Intel and all)
  6136.  
  6137.  
  6138. ESC 7  (First byte = DFh)
  6139. ==========================
  6140. ESCAPE 111    MMRRRMMM
  6141. ==========================
  6142.         Operation
  6143. RRR    If MM<>11    If MM=11
  6144. 000    FILD   mem16i    FFREE  ST(i)
  6145. 001            FXCH   ST(i)
  6146. 010    FIST   mem16i    FST    ST(i)
  6147. 011    FISTP  mem16i    FSTP   ST(i)
  6148. 100    FBLD   mem80b
  6149. 101    FILD   mem64i
  6150. 110    FBSTP  mem80b
  6151. 111    FISTP  mem64i
  6152.  
  6153. Note: Next Instruction have opcodes:
  6154. Mnemonic    Opcode
  6155. FNSTSW    AX    DFh E0h      (287+)
  6156. FNSTDW    AX    DFh E1h      (387SL Mobile)
  6157. FSTSG    AX    DFh E2h      (387SL Mobile)
  6158. FRINEAR        DFh FCh      (Cyrix)
  6159. FUCOMIP ST0,STi DFH E8H+i (P6)
  6160. FCOMIP    ST0,STi DFH F0H+i (P6)
  6161.  
  6162.  
  6163.  
  6164. ------------------------------------------
  6165. APPENDIX G
  6166.  
  6167. BUGS & CPU IDENTIFICATION INFO
  6168.  
  6169. 1) How to separate i386SX and i386DX
  6170.    (Cx486SLC and Cx486DLC)
  6171.    Note:  With 386DX type CPU possible to used
  6172.       287 class NPX, and bit 4 in CR0
  6173.       ET - Extention Type on DX we may to
  6174.       clear to 0, but for SX and REAL 486
  6175.       this bit always 1.
  6176.    Routine:
  6177.     mov    eax,cr0
  6178.     push    eax
  6179.     and    al,0efh
  6180.     mov    cr0,eax
  6181.     mov    eax,cr0
  6182.     test    al,10h
  6183.     pop    eax
  6184.     mov    cr0,eax
  6185.     jne    SX/SLC
  6186.     jmp    DX/DLC
  6187.  
  6188.  
  6189. 2) How to separate i486SX and i487SX/i486DX/DX2 etc
  6190.     Routine:
  6191. memory_location    DW    ?
  6192.     mov    memory_location,0
  6193.     fninit
  6194.     fstcw    memory_location
  6195.     cmp    memory_location,037Fh
  6196.     jz    i486SX
  6197.     jmp    i486DX/DX2etc/i487SX
  6198.  
  6199.  
  6200. 3) How to separate Cyrix's CPUs and other
  6201.        Be sure that Your CPU no Pentium before
  6202.        UMOV executed on Intel and other in
  6203.        Non SM modes as MOV.
  6204.        But Cyrix executed this instruction as
  6205.        Double NOP, and never generate INT 6.
  6206.        So.
  6207. Mem_Loc    DW  1
  6208.     xor    ax,ax
  6209.     umov    ax,Mem_Loc
  6210.     or    ax,ax
  6211.     jz    Cyrix
  6212.     jmp    No_Cyrix
  6213.  
  6214.  
  6215. 4) Standart Way: Part 1
  6216.    (Intel recomended this way)
  6217.  
  6218.     pushf
  6219.     pop    ax
  6220.     and    ax,0fffh    ; Clear bits 15..12
  6221.     push    ax
  6222.     popf
  6223.     and    ax,0f000h    ; Is bits 15..12=0 ?
  6224.     jz    286_CPU
  6225.     and    ax,8000h    ; Is bit 15=0
  6226.     jz    386_and_Higher
  6227.     jmp    86_88and186_186etc
  6228.  
  6229.  
  6230. 5) How separate 86/88, 186/188 and NECs
  6231.  
  6232.     mov    ax,1
  6233.     mov    cl,33
  6234.     shl    ax,cl
  6235.     jnz    186_188
  6236.     pusha        ; Executed on 8086/8088 as JMP $+2
  6237.     stc
  6238.     jc    NECs
  6239.     jmp    86_88
  6240.  
  6241.  
  6242. 6) Non CMOS 8086/88 execute command MOV CS,xxxx (Opcode 8Eh ...)
  6243.    CMOS 80C86/88 ignore it.
  6244.  
  6245. 7) Then Invalid Opcode NEC/Sony V40/V50 do INT 6
  6246.                NEC/Sony V20/V30 don't.
  6247.  
  6248. 8) Remember POP CS on 8086/8088.
  6249.  
  6250. 9) PUSH SP
  6251.    286 placed in stack new value of SP
  6252.    86/88 old.
  6253.  
  6254. 10) Best way to Reset 286+ in Real Mode:
  6255.     xor      sp,sp
  6256.     push  smth
  6257.  
  6258. 11) Maximal Length of Instructian
  6259.     86: N/R
  6260.     286:  10 byte
  6261.     386+: 15 byte
  6262.  
  6263. ------------------------------------------------
  6264. APPENDIX H
  6265. Internal Names Of Processors
  6266.  
  6267. (Intel)
  6268. P9    i386SX
  6269. P4    i486DX
  6270. P4S    i486SX
  6271. P23S    i487SX
  6272. P23T    OverDrive for PGA(169)
  6273. P4T    OverDrive for PGA(168)
  6274. P24S    i486DX2
  6275. P24T    Pentium OverDrive for  i486DX2 socket 3 (Vcc=5V,core=3V).
  6276. P24CT    Pentium OverDrive for Socket 3 (Vcc=3V)
  6277. P5    Pentium-60,66
  6278. P54C    Pentium-90,100,75 x1.5 usually with APIC and Multiprocessing features
  6279. P54CS    Pentium-120,133      x2   with reduced APIC and multipr. features
  6280. P55C    Bugfix P54C with clock 150,166, 180  (CLK x3) 2.5V
  6281. P24C    IntelDX4
  6282. P24D    i486DX2 with WB cache (IntelDX2 (tm) WriteBack Enhanced)
  6283. P54M    Overdrive ( include to P54C but P54C work too)
  6284. P6    ??????    (no comments)
  6285. P7    ??????    (no comments)
  6286. P54CSQ    2x Pentiums P120 etc.
  6287.  
  6288. (Cyrix)
  6289. M5    Cx486S/S2
  6290. M6    Cx486D/D2
  6291. C6    Cx487D
  6292. M7    Cx486DX/Cx486DX2
  6293. M1    Pentium class CPU: 64bit with 32 Regs,WB 16KB cache
  6294. M1 SC    Hybrid from M1 and M7: new FPU,but only ONE scalar unit,
  6295.     so CPU none superscalar but work faster what M7.
  6296. M1r    Feature M1 with reduced due size.
  6297.  
  6298.  
  6299.  
  6300. -------------------------------------------------
  6301. APPENDIX  I       FORMAT  OF DR6  REGISTER
  6302.  
  6303.     Am386xx                Am486SXLV
  6304. CPU i386xx       TI486SXL        Am386DXLV  TI486SLC/e
  6305.     i486xx  P5    M7 Cx486SLC IBM486SLC2    Am386SXLV  TI486SXLC   Am486xx
  6306. Bits
  6307. 0    B0        B0    B0   B0        B0    B0        B0    B0
  6308. 1    B1        B1    B1   B1        B1    B1        B1    B1
  6309. 2    B2        B2    B2   B2        B2    B2        B2    B2
  6310. 3    B3        B3    B3   B3        B3    B3        B3    B3
  6311. 4    0        1    1    1        0    0        1    0
  6312. 5    0        1    1    1        0    0        1    0
  6313. 6    0        1    1    1        0    0        1    0
  6314. 7    0        1    1    1        0    0        1    0
  6315. 8    0        1    1    1        0    0        1    0
  6316. 9    0        1    1    1        0    0        1    0
  6317. 10   0        1    1    1        0    0        1    0
  6318. 11   0        1    1    1        0    0        1    0
  6319. 12   0        1    0    0        BK    SMMS        0    0
  6320. 13   BD        BD    0    1        BD    BD        0    BD
  6321. 14   BS        BS    BS   BS        BS    BS        BS    BS
  6322. 15   BT        BT    BT   BT        BT    BT        BT    BT
  6323. 16   0        1    0    0        0    0        0    0
  6324. 17   0        1    0    0        0    0        0    0
  6325. 18   0        1    0    0        0    0        0    0
  6326. 19   0        1    0    0        0    0        0    0
  6327. 20   0        1    0    0        0    0        0    0
  6328. 21   0        1    0    0        0    0        0    0
  6329. 22   0        1    0    0        0    0        0    0
  6330. 23   0        1    0    0        0    0        0    0
  6331. 24   0        1    0    0        0    0        0    0
  6332. 25   0        1    0    0        0    0        0    0
  6333. 26   0        1    0    0        0    0        0    0
  6334. 27   0        1    0    0        0    0        0    0
  6335. 28   0        1    0    0        0    0        0    0
  6336. 29   0        1    0    0        0    0        0    0
  6337. 30   0        1    0    0        0    0        0    0
  6338. 31   0        1    0    0        0    0        0    0
  6339.  
  6340.  
  6341. -------------------------------------------------
  6342. APPENDIX  J        FORMAT  OF DR7  REGISTER
  6343.  
  6344.     Am386xx                Am486SXLV
  6345. CPU i386xx       TI486SXL        Am386DXLV  TI486SLC/e
  6346.     i486xx  P5    M7 Cx486SLC IBM486SLC2    Am386SXLV  TI486SXLC  Am486XX
  6347. Bits
  6348. 0    L0        L0    L0   L0        L0    L0        L0        L0
  6349. 1    G0        G0    G0   G0        G0    G0        G0        G0
  6350. 2    L1        L1    L1   L1        L1    L1        L1        L1
  6351. 3    G1        G1    G1   G1        G1    G1        G1        G1
  6352. 4    L2        L2    L2   L2        L2    L2        L2        L2
  6353. 5    G2        G2    G2   G2        G2    G2        G2        G2
  6354. 6    L3        L3    L3   L3        L3    L3        L3        L3
  6355. 7    G3        G3    G3   G3        G3    G3        G3        G3
  6356. 8    LE        LE    LE   LE        LE    LE        LE        LE
  6357. 9    GE        GE    GE   GE        GE    GE        GE        GE
  6358. 10   0        1    1    0        0    0        1        0
  6359. 11   0        0    0    0        GM    0        0        0
  6360. 12   0        0    0    0        TP    SMIE        0        0
  6361. 13   GD        GD    GD   GD        GD    0        GD        0
  6362. 14   0        0    0    0        TB    0        0        0
  6363. 15   0        0    0    0        TT    0        0        0
  6364. 16   R/W0   ----------------------------------------------------------->
  6365. 17   R/W0   ----------------------------------------------------------->
  6366. 18   LEN0
  6367. 19   LEN0        same as column 1
  6368. 20   R/W1
  6369. 21   R/W1
  6370. 22   LEN1
  6371. 23   LEN1
  6372. 24   R/W2
  6373. 25   R/W2         .....
  6374. 26   LEN2
  6375. 27   LEN2
  6376. 28   R/W3
  6377. 29   R/W3
  6378. 30   LEN3   ------------------------------------------------------------>
  6379. 31   LEN3   ------------------------------------------------------------>
  6380.  
  6381.  
  6382. -------------------------------------------------
  6383. APPENDIX  K         FORMAT  OF TR4  REGISTER
  6384.  
  6385.                 WB-Enh.         WB-Enh.        AMD Enhanced
  6386.                 IntelDX2   IntelDX4     IntelDX4        CPU when
  6387. CPU i486xx  M7    TI486SXC/e  (WB mode)  (WT mode) (WB mode) TI486SXL EXT=0  EXT=1
  6388. Bits
  6389. 0   ---       ---       0          VL    ---      VL        0          --   --
  6390. 1   ---       ---       0          VH    ---      VH        0          --   --
  6391. 2   ---       ---       0          ---    ---      ---       VALID_BLK  --   --
  6392. 3  VALID VALID     VALID          ---    VALID      ---       VALID    VALID VALID
  6393. 4  VALID VALID     VALID          ---    VALID      ---       VALID    VALID VALID
  6394. 5  VALID VALID     VALID          ---    VALID      ---       VALID    VALID VALID
  6395. 6  VALID VALID     VALID          ---    VALID      ---       VALID    VALID VALID
  6396. 7   LRU      LRU      LRU          LRU    LRU      LRU       LRU         LRU   LRU
  6397. 8   LRU      LRU      ---          LRU    LRU      LRU       ---         LRU   LRU
  6398. 9   LRU      LRU      TAG          LRU    LRU      LRU       ---         LRU   LRU
  6399. 10   V       V      TAG          ---     V      ---       ---          V       V
  6400. 11  TAG      TAG      TAG          TAG    ---      ---       ---          0       --
  6401. 12  TAG      TAG      TAG          TAG    TAG      TAG       ---         TAG   --
  6402. 13  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6403. 14  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6404. 15  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6405. 16  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6406. 17  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6407. 18  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6408. 19  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6409. 20  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST0
  6410. 21  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST0
  6411. 22  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST1
  6412. 23  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST1
  6413. 24  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST2
  6414. 25  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST2
  6415. 26  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST3
  6416. 27  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   ST3
  6417. 28  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6418. 29  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   STn
  6419. 30  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   STn
  6420. 31  TAG      TAG      TAG          TAG    TAG      TAG       TAG         TAG   --
  6421.  
  6422.  
  6423. -------------------------------------------------
  6424. APPENDIX  L        FORMAT  OF TR5  REGISTER
  6425.  
  6426.                 WB-Enh.         WB-Enh.        AMD Enhanced
  6427.     Am486xx            IntelDX2   IntelDX4     IntelDX4        CPU when
  6428. CPU i486xx  M7    TI486SXC/e  (WB mode)  (WT mode) (WB mode) TI486SXL  WT      WB
  6429. Bits
  6430. 0   CTL       CTL      CTL         CTL    CTL        CTL         CTL    CTL     CTL
  6431. 1   CTL       CTL      CTL         CTL    CTL        CTL         CTL    CTL     CTL
  6432. 2   ENT       ENT      ENT         ENT    ENT        ENT         ENT    ENT     ENT
  6433. 3   ENT       ENT      ---         ENT    ENT        ENT         ENT    ENT     ENT
  6434. 4   SET       SET      SET         SET    SET        SET         SET    SET     SET
  6435. 5   SET       SET      SET         SET    SET        SET         SET    SET     SET
  6436. 6   SET       SET      SET         SET    SET        SET         SET    SET     SET
  6437. 7   SET       SET      SET         SET    SET        SET         SET    SET     SET
  6438. 8   SET       SET      SET         SET    SET        SET         SET    SET     SET
  6439. 9   SET       SET      SET         SET    SET        SET         SET    SET     SET
  6440. 10  SET       SET      SET         SET    SET        SET         SET    SET     SET
  6441. 11  ---       ---      SET         ---    SET        SET         SET    SET     SET
  6442. 12  ---       ---      ---         ---    ---        ---         WAY   (SET)(SET)
  6443. 13  ---       ---      ---         SLF    ---        SLF         ---    ---     ---
  6444. 14  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6445. 15  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6446. 16  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6447. 17  ---       ---      ---         ---    ---        ---         ---    ---     ST
  6448. 18  ---       ---      ---         ---    ---        ---         ---    ---     ST
  6449. 19  ---       ---      ---         ---    ---        ---         ---    ---     EXT
  6450. 20  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6451. 21  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6452. 22  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6453. 23  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6454. 24  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6455. 25  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6456. 26  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6457. 27  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6458. 28  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6459. 29  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6460. 30  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6461. 31  ---       ---      ---         ---    ---        ---         ---    ---     ---
  6462.  
  6463.  
  6464. -----------------------------------------
  6465. VME  -    Virtual Mode Extention
  6466.  
  6467. Support by: Intel SL Enhanced 486 CPUs, Pentium.
  6468. Address Generation: like in VM.
  6469. Differences with VM:
  6470. 1) CLI/STI never interrupt in PM, but change status
  6471. of VIF, if enable.
  6472. 2) INT xxh instruction, which mark in interrupt table,
  6473. which contained in TSS as virtual, never change CPU to PM,
  6474. but processing in VM.
  6475.  
  6476. Note: See also EFLAG and CR4 registers format.
  6477. Note: Check CPUID for support VME.
  6478.  
  6479. More Info:
  6480. More Info about it is Intel Confidential.
  6481.  
  6482.  
  6483.  
  6484.  
  6485. ----------------------------------------------------
  6486. More Info? OK
  6487.  
  6488. EFLAGS register format
  6489. (C) (P) Potemkins' Hackers Group
  6490. Revision 1.00  23/09/94
  6491. ==============================================================================
  6492.  
  6493. [Pentium P5] [Pentium P54C] [IntelDX4]
  6494.  
  6495. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  6496. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  6497. -----------------------------------------------------
  6498.        I V V A V R     N IO O D I T S Z   A    P   C
  6499. 0000000000 D I I C M F 0 T PL F F F F F F 0 F 0 F 1 F
  6500.          P F
  6501. -----------------------------------------------------
  6502.  
  6503.  
  6504. =============================================================================
  6505.  
  6506.  
  6507. [i486 SL Enhanced SX,DX,DX2] [IntelSX2]
  6508. [UMC]
  6509.  
  6510. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  6511. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  6512. -----------------------------------------------------
  6513.        I     A V R     N IO O D I T S Z   A    P   C
  6514. 0000000000 D 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  6515. -----------------------------------------------------
  6516.  
  6517.  
  6518. =============================================================================
  6519.  
  6520.  
  6521. [i486 SX,DX,DX2] [OverDrive] [M5,M6,M7] [AMD Am486DX/DXL/DX2/DXL2 ] etc
  6522. [IBM BL486DX/DX2] [Cx486SLC/DLC/SLC2/DLC2]
  6523.  
  6524. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  6525. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  6526. -----------------------------------------------------
  6527.          A V R     N IO O D I T S Z   A    P   C
  6528. 0000000000 0 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  6529. -----------------------------------------------------
  6530.  
  6531.  
  6532. ==============================================================================
  6533.  
  6534. [i386 SX,DX,CX,EX]  [AMD Am386 ] [C&T 38600 ] etc
  6535. [IBM 486SLC2]
  6536.  
  6537. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  6538. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  6539. -----------------------------------------------------
  6540.            V R     N IO O D I T S Z   A    P   C
  6541. 0000000000 0 0 0 0 M F 0 T PL F F F F F F 0 F 0 F 1 F
  6542. -----------------------------------------------------
  6543.  
  6544.  
  6545. ==============================================================================
  6546.  
  6547. [i376]
  6548.  
  6549. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  6550. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  6551. -----------------------------------------------------
  6552.              R     N IO O D I T S Z   A    P   C
  6553. 0000000000 0 0 0 0 0 F 0 T PL F F F F F F 0 F 0 F 1 F
  6554. -----------------------------------------------------
  6555.  
  6556. ===============================================================================
  6557.  
  6558. [i286 and all clones]
  6559.  
  6560. 1 1 11 1 1
  6561. 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  6562. ------------------------------
  6563.   N IO O D I T S Z   A     P   C
  6564. 0 T PL F F F F F F 0 F 0 F 1 F
  6565. ------------------------------
  6566.  
  6567.  
  6568. ================================================================================
  6569.  
  6570. [NEC/Sony V20/V30]
  6571.  
  6572. 1 1 1 1 1 1
  6573. 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  6574. -------------------------------
  6575. M    O D I T S Z   A      P   C
  6576. D 1 1 1 F F F F F F 0 F 0 F 1 F
  6577. -------------------------------
  6578.  
  6579.  
  6580. ================================================================================
  6581.  
  6582. [80x186 ,EA,EB,EC,XL]  [8086/88 and all clones]
  6583.  
  6584. 1 1 1 1 1 1
  6585. 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  6586. -------------------------------
  6587.     O D I T S Z   A      P   C
  6588. 1 1 1 1 F F F F F F 0 F 0 F 1 F
  6589. -------------------------------
  6590.  
  6591.  
  6592. ==============================================================================
  6593.  
  6594. ID   - Identification Flag
  6595. VIP  - Virtual Interrupt Pending
  6596. VIF  - Virtual Interrupt Flag
  6597. AC   - Align Check
  6598. VM   - Virtual 8086 Mode
  6599. RF   - Resume Flag
  6600. MD   - Mode Flag
  6601. NT   - Nested Task flag
  6602. IOPL - Input/Output Privelege Level
  6603. OF   - Overflow Flag
  6604. DF   - Direction Flag
  6605. IF   - Interrupt Flag
  6606. TF   - Trap Flag
  6607. SF   - Sign Flag
  6608. ZF   - Zero Flag
  6609. AF   - Auxiliary Carry Flag
  6610. PF   - Parity Flag
  6611. CF   - Carry Flag
  6612.  
  6613.  
  6614.  
  6615. ==============================================================================
  6616. CR0 register format
  6617. (C) (P) Potemkins' Hackers Group
  6618. Revision 1.00     23/02/95
  6619. ==============================================================================
  6620.  
  6621. [Pentium P5] [Pentium P54C]
  6622.  
  6623. 3 3 2 2222222221 1 1 1 111111
  6624. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  6625. ---------------------------------------------
  6626. P C N         A   W          N   T E M P
  6627. G D W 0000000000 M 0 P 0000000000 E 1 S M P E
  6628.  
  6629. ---------------------------------------------
  6630.  
  6631.  
  6632. =============================================================================
  6633.  
  6634. [IntelDX4] [486DX/DX2, IntelDX4 ]
  6635.  
  6636.  
  6637. 3 3 2 2222222221 1 1 1 111111
  6638. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  6639. ---------------------------------------------
  6640. P C N         A   W              T      M P
  6641. G D W 0000000000 M 0 P 0000000000 * 1 S 1 P E
  6642.  
  6643. ---------------------------------------------
  6644.  
  6645. ==============================================================================
  6646.  
  6647.  
  6648. [Cx486SLC]
  6649.  
  6650.  
  6651. 3 3 2 2222222221 1 1 1 111111
  6652. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  6653. ---------------------------------------------
  6654. P C         A   W              T E M P
  6655. G D 0 0000000000 M 0 P 0000000000 0 1 S M P E
  6656.  
  6657. ---------------------------------------------
  6658.  
  6659. ==============================================================================
  6660.  
  6661. [Cx486DLC]
  6662.  
  6663.  
  6664. 3 3 2 2222222221 1 1 1 111111
  6665. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  6666. ---------------------------------------------
  6667. P C N         A   W            E T E M P
  6668. G D W 0000000000 M 0 P 0000000000 0 T S M P E
  6669.  
  6670. ---------------------------------------------
  6671.  
  6672. ==============================================================================
  6673.  
  6674.  
  6675. [Intel i486SX,SX2]
  6676.  
  6677.  
  6678. 3 3 2 2222222221 1 1 1 111111
  6679. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  6680. ---------------------------------------------
  6681. P C N         A   W              T E M P
  6682. G D W 0000000000 M 0 P 0000000000 * 1 S M P E
  6683.  
  6684. ---------------------------------------------
  6685.  
  6686. ==============================================================================
  6687.  
  6688. [IBM 486SLC2]
  6689.  
  6690.  
  6691. 3 32222222222111 1 111111
  6692. 1 09876543210987 6 54321098765 4 3 2 1 0
  6693. ---------------------------------------------
  6694. P         W         T E M P
  6695. G 00000000000000 P 0000000000  1 S M P E
  6696.  
  6697. ---------------------------------------------
  6698.  
  6699. ==============================================================================
  6700.  
  6701. [Intel i386SX]
  6702.  
  6703.  
  6704. 3 322222222221111111111
  6705. 1 09876543210987654321098765 4 3 2 1 0
  6706. ---------------------------------------------
  6707. P                   T E M P
  6708. G 0000000000000000000000000  1 S M P E
  6709. ---------------------------------------------
  6710.  
  6711. ==============================================================================
  6712.  
  6713.  
  6714. [Intel i386DX]
  6715.  
  6716.  
  6717. 3 322222222221111111111
  6718. 1 09876543210987654321098765 4 3 2 1 0
  6719. ---------------------------------------------
  6720. P                 E T E M P
  6721. G 0000000000000000000000000  T S M P E
  6722. ---------------------------------------------
  6723.  
  6724. ==============================================================================
  6725.  
  6726. [80286]
  6727.  
  6728. Note: None CR0, but MSW
  6729.  
  6730. 111111
  6731. 543210987654 3 2 1 0
  6732. ---------------------
  6733.          T E M P
  6734. 000000000000 S M P E
  6735. ---------------------
  6736.  
  6737. ==============================================================================
  6738.  
  6739.  
  6740. PE - Protection Enable
  6741. MP - Monitor Processor
  6742. EM - Emulation
  6743. TS - Task Switch
  6744. ET - Extention Type
  6745. NE - Numeric Exception
  6746. WP - Write protect
  6747. AM - Align Mode
  6748. NW - No Write
  6749. CD - Cache Disable
  6750. PG - Paging
  6751.  
  6752.  
  6753.  
  6754.  
  6755.  
  6756.  
  6757. ==============================================================================
  6758. CR4 register format
  6759. (C) (P) Potemkins' Hackers Group
  6760. Revision 1.00     23/09/94
  6761. ==============================================================================
  6762.  
  6763. [Pentium P5] [Pentium P54C]
  6764.  
  6765. 3322222222221111111111
  6766. 1098765432109876543210987 6 5 4 3 2 1 0
  6767. ---------------------------------------
  6768.               M   P D T P V
  6769. 0000000000000000000000000 C 0 S E S V M
  6770.               E   E      D I E
  6771. ----------------------------------------
  6772.  
  6773.  
  6774. =============================================================================
  6775.  
  6776. [IntelDX4] [486s SL Enhanced]
  6777.  
  6778. 3322222222221111111111
  6779. 109876543210987654321098765432 1 0
  6780. ----------------------------------
  6781.                    P V
  6782. 000000000000000000000000000000 V M
  6783.                    I E
  6784. ----------------------------------
  6785.  
  6786.  
  6787. ==============================================================================
  6788.  
  6789.  
  6790. MCE - Machine Check Enable
  6791. PSE - Page Size Extention
  6792. DE  - Debbuging Expection
  6793. TSD - Time Stamp Disable
  6794. PVI - Protected mode Virtual Interrupt
  6795. VME - Virtual Mode Exception
  6796.  
  6797.  
  6798. ---------------------------------------------
  6799. APPENDIX LAST
  6800. List of the Literature
  6801.  
  6802.  
  6803. 1) "Pentium (tm) Famaly User's Manual
  6804.     Volume 3: Architecture and Programming Manual"
  6805.    // Intel Corp. 1994
  6806.    ;; Order number: 241430
  6807.  
  6808. 2) "Blue Lightning 486DX2 3 and 5 Volt Microprocessors
  6809.     Databook"
  6810.    // IBM Corp./Cyrix Corp. 1994
  6811.    ;; Order Number: MPIDX2DSU-01
  6812.  
  6813. 3) "486SLC2 (tm) Microprocessor"
  6814.    Data Sheet.
  6815.    // IBM Corp. 1993
  6816.    ;; Order number VT05452
  6817.  
  6818. 4) "Cyrix Cx486SLC (tm) Microprocessor"
  6819.    // Cyrix Corp. 1991
  6820.    ;; Order Number 94073
  6821.  
  6822. 5)  "3-Volt System Logic for Personal Computers"
  6823.     // Advanced Micro Devices Inc. 1993
  6824.     ;; Order number: 17028B
  6825.  
  6826. 6)  "IntelDX4 (tm) Processor Data Book"
  6827.     // Intel Corp. 1994
  6828.     ;; Order number: 241944
  6829.  
  6830. 7)  "Intel Processor Identification with the
  6831.      CPUID instruction"
  6832.     // Intel Corp. 1993,1994
  6833.     ;; Order number: 241618
  6834.  
  6835. 8)  "82489DX Advanced Programmable Interrupt
  6836.      Controller"
  6837.     Application Note: AP-485
  6838.     // Intel Corp. 1993
  6839.     ;; Order number: 290446
  6840.  
  6841. 9)  "Optimization for Intel's 32-bit Processors"
  6842.     Application Note: AP-500
  6843.     // Intel Corp. 1993
  6844.     ;; Order number 241799
  6845.  
  6846. A)  "MultiProcessor Specification Version 1.1"
  6847.     // Intel Corp. 1993
  6848.     ;; Order Number: 242016
  6849.  
  6850. etc.....
  6851. ---------------------------------------------------------
  6852. [Credits]:
  6853. THANX for Martin Malik and RealSoft.
  6854. (malik@elf.stuba.sk)
  6855. Cyrix's CPUs type data.
  6856. Some Vendors strings for CPUID.
  6857. P54M ID code
  6858. Part of Tis Kind of Info (C) RealSoft.
  6859. Note: Martin We Waiting Message from Your New Address...
  6860. ----------------------------------------------------------
  6861. If Your (Reader) interested for some info about 80x86 CPUs
  6862. lets send request to
  6863.               avp@iron.misa.ac.ru
  6864. and we place some information in next versions of our doc,
  6865. or answer directly if we can.
  6866. -----------------------------------------------------------
  6867. If Your found some errors or incorrections in this text
  6868. please    send info 'bout it.
  6869. -----------------------------------------------------------
  6870. -----------------------------------------------------------
  6871. Thanx for  Alex A.Afonasov,Yury V.Temkin,
  6872.        and all other numbers of
  6873.        Potemkin's Hackers Group.
  6874.        - - - - - - - - - - - - - -
  6875. Special Thanks for  Alex (DVM).
  6876. ------------------------------------------------------------
  6877. Sorry, But EOF
  6878.  
  6879.